社区
C++ 语言
帖子详情
C++的内存划分?
lhyxiaolang
2014-10-24 02:42:06
又不有点权威的参考文档,书籍?
在网上查资料看到:两种说法,一种是分为 栈,堆,自由存储区,全局,常量;第二,堆,栈,全局,常量,程序代码区,到底哪一个是对的呢?我个人一直是理解堆和自由存储区是一种东西,这个程序代码区是个什么内存?请解答一下疑惑
...全文
122
2
打赏
收藏
C++的内存划分?
又不有点权威的参考文档,书籍? 在网上查资料看到:两种说法,一种是分为 栈,堆,自由存储区,全局,常量;第二,堆,栈,全局,常量,程序代码区,到底哪一个是对的呢?我个人一直是理解堆和自由存储区是一种东西,这个程序代码区是个什么内存?请解答一下疑惑
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
flyinman
2014-10-24
打赏
举报
回复
linux c/c++程序的内存分布图
代码区存放代码
文字常量区存放字符串常量,比如 char *s = “hello world”; 后面的字符串就存放在这个区域
全局静态区存放全局变量和静态局部变量,具有全生存周期,其中bss段存放未初始化变量,系统自动默认初始化为0,data段存放初始化的全局静态变量
栈区向上增长,存放局部变量,函数参数等。堆空间存放你new或者malloc出来的空间存放的数据。
堆空间上面是存放程序执行的参数的字符串,就是int argc,char*argv[]表示的东西。
再往上存放的是程序执行所需的环境变量的字符串。
JiangWenjie2014
2014-10-24
打赏
举报
回复
学过汇编的都知道,一个可执行程序如果要能够让操作系统加载运行,那么在内存中通常有代码段,数据段和栈段,代码段可读可执行,数据段可读可写,栈段可读可写。至于全局数据,如果从汇编的角度,可以单独放到一个段中,也可以放到数据段的某个位置。然而对于高级语言来说,不可能直接在代码中指定这个数据必须放在哪里,因此出现了什么专门放置常量的地方,放置静态数据的地方,放置全局数据的地方等等,这些都是由编译器替我们决定的。所以如果你非得搞清楚,那就只能去研究编译器了,否则要是懂一点汇编的话,不会去纠结这个东西的。
C和
C++
内存
划分
总结
C和
C++
内存
划分
总结
C++
内存
分区的
划分
C++
内存
分区的
划分
heap stack 区别
C++
中的
内存
划分
C++
中的
内存
划分
非常好的
内存
方面的讲解
C/
C++
内存
区域
划分
详解
C/
C++
内存
管理详解 目录C/
C++
内存
分布C语言中动态
内存
管理方式
C++
中动态
内存
管理 C/
C++
内存
分布 C语言中动态
内存
管理方式
C++
中动态
内存
管理
C++
内存
分区
原创文章,转载请注明出处。
C++
内存
分区:栈、堆、全局/静态存储区、常量存储区、代码区。 栈: 存放函数的局部变量、函数参数、返回地址等,由编译器自动分配和释放。 堆: 动态申请的
内存
空间,就是由 malloc 分配的
内存
块,由程序员控制它的分配和释放,如果程序执行结束还没有释放,操作系统会自动回收。 全局区/静态存储区(.bss 段和 .data 段): 存放全局变量和静态变量,程序运行结束操作系统自动释放,在 C 语言中,未初始化的放在 .bss 段中,初始化的放在 .data 段中,
C++
中.
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章