【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 语言】内存四区原理 ( 栈内存属性增长方向 | 栈内存开口方向 | 代码示例 )相关推荐
- 【C 语言】内存四区原理 ( 内存四区建立流程 )
文章目录 一.内存四区建立流程 一.内存四区建立流程 内存四区 建立流程 : 1. 加载代码到内存 : 操作系统 中 执行 可执行程序 , 将 存放在硬盘中的 可执行程序 ( 包含代码 ) 加载到内存 ...
- 【C 语言】内存四区原理 ( 栈内存与堆内存对比示例 | 函数返回的堆内存指针 | 函数返回的栈内存指针 )
文章目录 一.函数返回的堆内存指针 二.函数返回的栈内存指针 一.函数返回的堆内存指针 在 main 主函数中 , 调用 get_memory 子函数 , 返回 malloc 初始化的堆内存 , 可以 ...
- 【C 语言】内存四区原理 ( 常量区示例 | 不同函数返回的相同字符串的指针地址相同 )
文章目录 前言 一.正常程序 二.获取相同的字符串内容 前言 C / C++ 编译器会对代码进行 词法分析 , 语法分析 , 句法分析 ; 然后对代码进行优化 ; 将 字符串常量 赋值给指针时 , 首 ...
- C语言程序的内存四区模型
C语言程序的内存四区模型 内存四区的建立流程 流程说明 各区元素分析 内存四区的建立流程 流程说明 1.操作系统把物理硬盘代码load到内存 2.操作系统把c代码分成四个区 3.操作系统找到main函 ...
- alin的学习之路:C语言篇(一)(内存四区模型,宏函数,调用惯例,内存存储方式)
@TOC(内存四区模型,宏函数,调用惯例,内存存储方式) 1. 内存四区及其使用注意 内存四区:代码区,全局静态区,栈区,堆区 代码区 代码区存放的是CPU执行的二进制指令 特点: 只读 共享 栈区 ...
- 内存四区 malloc/free与new/delete的区别
前言 之前写了一篇关于<快速排序的4种优化>的博文,当时在验证各种情况的时候忽略内存分配的问题,导致所得到的结果分析的不全面.因为在刚开始写程序的时候将数组声明在 main() 里面,这样 ...
- 内存四区(代码区 静态区 栈区 堆区)
参考:内存四区(代码区 静态区 栈区 堆区) 作者:今天天气眞好 发布时间: 2021-04-01 18:09:13 网址:https://blog.csdn.net/qq_51118175/arti ...
- 深入理解数据类型、变量类型属性、内存四区和指针
数据类型可理解为创建变量的模具(模子):是固定内存大小的别名. 数据类型的作用:编译器预算对象(变量)分配的内存空间大小. 既能读又能写的内存对象,称为变量:若一旦初始化后不能修改的对象则称为常量. ...
- C 进阶内存四区(3)
1 内存四区的建立流程 流程说明 1.操作系统把物理硬盘代码load到内存 2.操作系统把c代码分成四个区 3.操作系统找到main函数入口执行 2 内存四区模型和函数调用模型变量传递分析 1.一个主 ...
最新文章
- matlab将二值图像与原图重叠_[转载]图像处理matlab及图像融合图像镶嵌图像拼接...
- SQL注入——SQLmap的进阶使用(十三)
- plsql连接oracle11g怎么配置,怎么使用plsql怎么连接64位Oracle11g数据库?
- Execute SQL Task 参数和变量的映射
- python writelines_Python之write与writelines区别
- PSIM软件学习---04 子电路的创建
- 把双系统的linux删除,双系统删除linux
- 转-squid介绍及其简单配置
- 最全面、最详细web前端面试题及答案总结
- 医学专业学语文数学英语计算机嚒,医学专业到底有哪些一级学科,你知道吗?...
- vue项目使用i18n插件实现多语言切换功能
- 公众号800篇文章分类和索引
- 轻量级微信小说小程序源码+UI不错/很火的
- python跟plc通信
- 基于VS2015MFC在X86debug编译平台调试opengl 代码出现oxc0000007b错误的解决方法
- 中国App增长联盟,和优秀的创始人玩着办大事!
- 开源一文多发平台ArtiPub,让文章随处可阅
- 《Hive编程指南》阅读笔记
- 机器学习(19)之支持向量回归机
- android 自定义图片裁剪,Android图片裁剪工具封装
热门文章
- cas单点登录原理碎碎念
- 仿Word自动套用格式,用CSS设置表格样式
- 七问唐骏:真的性格好就能成功?
- MariaDB 视图与触发器(11)
- ​周锦民:腾讯在线教育视频互动直播间技术实践
- concurrent(六)同步辅助器CyclicBarrier 源码分析
- gprof + kprof + gprof2dot (性能 与 函数调用图)-
- Sum-product Networks
- 【学习笔记】MHP-VOS: Multiple Hypotheses Propagation for Video Object Segmentation
- ubuntu “快捷方式”