【C 语言】内存四区原理 ( 栈内存属性增长方向 | 栈内存开口方向 | 代码示例 )

举报
韩曙亮 发表于 2022/01/11 01:11:05 2022/01/11
【摘要】 文章目录 一、栈内存开口方向二、栈内存开口方向代码示例 一、栈内存开口方向 栈内存的生长方向 : 先后定义两个变量 int a , b; 开口向上 : b 的地址...





一、栈内存开口方向



栈内存的生长方向 : 先后定义两个变量 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 中执行 , 开口方向是向上的 ;

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/121447017

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。