文章目录

  • 一、栈内存开口方向
  • 二、栈内存开口方向代码示例

一、栈内存开口方向


栈内存的生长方向 : 先后定义两个变量 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 语言】内存四区原理 ( 栈内存属性增长方向 | 栈内存开口方向 | 代码示例 )相关推荐

  1. 【C 语言】内存四区原理 ( 内存四区建立流程 )

    文章目录 一.内存四区建立流程 一.内存四区建立流程 内存四区 建立流程 : 1. 加载代码到内存 : 操作系统 中 执行 可执行程序 , 将 存放在硬盘中的 可执行程序 ( 包含代码 ) 加载到内存 ...

  2. 【C 语言】内存四区原理 ( 栈内存与堆内存对比示例 | 函数返回的堆内存指针 | 函数返回的栈内存指针 )

    文章目录 一.函数返回的堆内存指针 二.函数返回的栈内存指针 一.函数返回的堆内存指针 在 main 主函数中 , 调用 get_memory 子函数 , 返回 malloc 初始化的堆内存 , 可以 ...

  3. 【C 语言】内存四区原理 ( 常量区示例 | 不同函数返回的相同字符串的指针地址相同 )

    文章目录 前言 一.正常程序 二.获取相同的字符串内容 前言 C / C++ 编译器会对代码进行 词法分析 , 语法分析 , 句法分析 ; 然后对代码进行优化 ; 将 字符串常量 赋值给指针时 , 首 ...

  4. C语言程序的内存四区模型

    C语言程序的内存四区模型 内存四区的建立流程 流程说明 各区元素分析 内存四区的建立流程 流程说明 1.操作系统把物理硬盘代码load到内存 2.操作系统把c代码分成四个区 3.操作系统找到main函 ...

  5. alin的学习之路:C语言篇(一)(内存四区模型,宏函数,调用惯例,内存存储方式)

    @TOC(内存四区模型,宏函数,调用惯例,内存存储方式) 1. 内存四区及其使用注意 内存四区:代码区,全局静态区,栈区,堆区 代码区 代码区存放的是CPU执行的二进制指令 特点: 只读 共享 栈区 ...

  6. 内存四区 malloc/free与new/delete的区别

    前言 之前写了一篇关于<快速排序的4种优化>的博文,当时在验证各种情况的时候忽略内存分配的问题,导致所得到的结果分析的不全面.因为在刚开始写程序的时候将数组声明在 main() 里面,这样 ...

  7. 内存四区(代码区 静态区 栈区 堆区)

    参考:内存四区(代码区 静态区 栈区 堆区) 作者:今天天气眞好 发布时间: 2021-04-01 18:09:13 网址:https://blog.csdn.net/qq_51118175/arti ...

  8. 深入理解数据类型、变量类型属性、内存四区和指针

    数据类型可理解为创建变量的模具(模子):是固定内存大小的别名. 数据类型的作用:编译器预算对象(变量)分配的内存空间大小. 既能读又能写的内存对象,称为变量:若一旦初始化后不能修改的对象则称为常量. ...

  9. C 进阶内存四区(3)

    1 内存四区的建立流程 流程说明 1.操作系统把物理硬盘代码load到内存 2.操作系统把c代码分成四个区 3.操作系统找到main函数入口执行 2 内存四区模型和函数调用模型变量传递分析 1.一个主 ...

最新文章

  1. matlab将二值图像与原图重叠_[转载]图像处理matlab及图像融合图像镶嵌图像拼接...
  2. SQL注入——SQLmap的进阶使用(十三)
  3. plsql连接oracle11g怎么配置,怎么使用plsql怎么连接64位Oracle11g数据库?
  4. Execute SQL Task 参数和变量的映射
  5. python writelines_Python之write与writelines区别
  6. PSIM软件学习---04 子电路的创建
  7. 把双系统的linux删除,双系统删除linux
  8. 转-squid介绍及其简单配置
  9. 最全面、最详细web前端面试题及答案总结
  10. 医学专业学语文数学英语计算机嚒,医学专业到底有哪些一级学科,你知道吗?...
  11. vue项目使用i18n插件实现多语言切换功能
  12. 公众号800篇文章分类和索引
  13. 轻量级微信小说小程序源码+UI不错/很火的
  14. python跟plc通信
  15. 基于VS2015MFC在X86debug编译平台调试opengl 代码出现oxc0000007b错误的解决方法
  16. 中国App增长联盟,和优秀的创始人玩着办大事!
  17. 开源一文多发平台ArtiPub,让文章随处可阅
  18. 《Hive编程指南》阅读笔记
  19. 机器学习(19)之支持向量回归机
  20. android 自定义图片裁剪,Android图片裁剪工具封装

热门文章

  1. cas单点登录原理碎碎念
  2. 仿Word自动套用格式,用CSS设置表格样式
  3. 七问唐骏:真的性格好就能成功?
  4. MariaDB 视图与触发器(11)
  5. ​周锦民:腾讯在线教育视频互动直播间技术实践
  6. concurrent(六)同步辅助器CyclicBarrier 源码分析
  7. gprof + kprof + gprof2dot (性能 与 函数调用图)-
  8. Sum-product Networks
  9. 【学习笔记】MHP-VOS: Multiple Hypotheses Propagation for Video Object Segmentation
  10. ubuntu “快捷方式”