栈的生长方向和内存存放方向

简介: 栈的生长方向和内存存放方向

栈的生长方向


栈的生长方向向下


内存存放方向


采取小端模式,内存存放方向向上


图解:



案例


#include<stdio.h>
#include<stdlib.h>
//1. 栈的生长方向
void test01() {
  int a = 10;
  int b = 20;
  int c = 30;
  int d = 40;
  printf("a = %d\n", &a);
  printf("b = %d\n", &b);
  printf("c = %d\n", &c);
  printf("d = %d\n", &d);
  //a的地址大于b的地址,故而生长方向向下
}
//2. 内存生长方向(小端模式)
void test02() {
  //高位字节 -> 地位字节
  int num = 0xaabbccdd;
  unsigned char* p = (unsigned char*)&num;
  //从首地址开始的第一个字节
  printf("%x\n", *p);
  printf("%x\n", *(p + 1));
  printf("%x\n", *(p + 2));
  printf("%x\n", *(p + 3));
}
int main()
{
  test01();
  test02();
  return 0;
}


6d63a08eefc253b46f0263ff56f2b9bb_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5rWB5qWa5Li25qC85b-1,size_20,color_FFFFFF,t_70,g_se,x_16.png

相关文章
|
4月前
|
存储 Java 编译器
【面试知识】Java内存分配之常量池、堆、栈
【面试知识】Java内存分配之常量池、堆、栈
|
1月前
|
存储 程序员 编译器
【C/C++ 堆栈以及虚拟内存分段 】C/C++内存分布/管理:代码区、数据区、堆区、栈区和常量区的探索
【C/C++ 堆栈以及虚拟内存分段 】C/C++内存分布/管理:代码区、数据区、堆区、栈区和常量区的探索
30 0
|
1月前
|
存储 缓存 Rust
【Rust】——所有权:Stack(栈内存)vs Heap(堆内存)(重点)
【Rust】——所有权:Stack(栈内存)vs Heap(堆内存)(重点)
22 0
|
3月前
|
C++
C++多线程场景中的变量提前释放导致栈内存异常
C++多线程场景中的变量提前释放导致栈内存异常
24 0
|
3月前
|
Java
jvm性能调优 - 07线上应用部署JVM实战_栈内存与永久代预估与设置
jvm性能调优 - 07线上应用部署JVM实战_栈内存与永久代预估与设置
80 0
|
4月前
|
存储 安全 程序员
【c语言】重温一下动态内存,int数组过大会造成栈错误
【c语言】重温一下动态内存,int数组过大会造成栈错误
45 0
|
5月前
|
安全 Linux 程序员
「技术干货」一文搞懂C语言内存模型与栈
「技术干货」一文搞懂C语言内存模型与栈
|
6月前
|
C++
[总结]c++ 内存泄露、内存溢出、内存越界和栈溢出
[总结]c++ 内存泄露、内存溢出、内存越界和栈溢出
154 0
|
9月前
|
Java 应用服务中间件 Linux
39-无限制的调用方法是如何让线程的栈内存溢出的?
《Java虚拟机规范》 明确允许Java虚拟机实现 自行选择是否支持栈的动态扩展, 而HotSpot虚拟机的选择是不支持扩展, 所以除非在创建线程申请内存时就因无法获得足够内存而出现OutOfMemoryError异常, 否则在线程运行时是不会因为扩展而导致内存溢出的, 只会因为栈容量无法容纳新的栈帧而导致StackOverflowError异常。
54 0
|
9月前
|
存储 安全 Java
09-本地方法栈和堆内存
本地方法栈和堆内存是Java虚拟机中的两个重要组成部分。 本地方法栈用于管理Java方法在执行过程中涉及的本地(Native)方法。它与Java虚拟机栈类似,但其不同之处在于本地方法栈是为本地方法服务的,而Java虚拟机栈则是为Java方法服务的。本地方法栈中包含本地方法的参数、局部变量以及方法调用和返回的相关信息。本地方法栈的内存分配和释放由JVM自行管理。 堆内存是Java虚拟机中用于存储对象实例的一块内存区域。堆内存是所有线程共享的,被用于存放Java程序中动态创建的对象。
73 0
09-本地方法栈和堆内存