C 语言内存四区原理 ( 栈内存属性增长方向 | 栈内存开口方向 | 代码示例 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C 语言内存四区原理 ( 栈内存属性增长方向 | 栈内存开口方向 | 代码示例 )相关的知识,希望对你有一定的参考价值。
一、栈内存开口方向
栈内存的生长方向 : 先后定义两个变量 int a , b;
- 开口向上 : b 的地址 > a 的地址 , a 放在下面 , b 放在上面 ;
- 开头向下 : b 的地址 < a 的地址 , a 放在上面 , b 放在下面 ;
注意 : 不管 栈内存 开口向上 , 还是开口向下 , 栈内存中 数组的地址 + 1 , 永远是向上的 , 按照地址增长方向由低地址到高地址向上 ;
栈内存中的内存空间标号 , 编译时确定 ;
二、栈内存开口方向代码示例
根据 栈的 后进先出 的特性 , 可以使用代码测试该 栈内存的 生长方向 ;
下面的代码中 , a
变量在栈底 , b
变量在栈顶 , b
变量的地址 < a
变量的地址 , 符合
代码示例 :
#include <stdio.h>
#include <stdlib.h>
int main()
int a;
int b;
// 打印 变量 a , b 的地址
printf("&a = %d , &b = %d\\n", &a, &b);
return 0;
执行结果 :
&a = 6422220 , &b = 6422216
上述代码 , 在不同的系统平台中 , 栈内存的增长方向不同 ; 在 Linux 中执行 , 开口方向是向上的 ;
以上是关于C 语言内存四区原理 ( 栈内存属性增长方向 | 栈内存开口方向 | 代码示例 )的主要内容,如果未能解决你的问题,请参考以下文章