内存布局问题

crazylibai 2009-10-15 02:54:34
windows中堆栈、静态数据存储区、代码区在内存中的布局是怎么样的?
...全文
38 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hifan 2009-10-15
  • 打赏
  • 举报
回复
来让我告诉你吧:

栈:每个线程有个,默认大小1M,编译时可以设定,一般是从高地址到低地址;作用是用来做函数调用的,压参数和本地变量。

堆:进程默认一个,但是可以自己创建自己需要的堆,默认大小1M,可以扩展,用来分配new(malloc in C)的数据。

静态数据存储区:在PE文件中有.bss和.data段,其中.bss是未初始化全局变量;.data是已经初始化的全局变量,一般在程序被加载到内存空间中时加载,按照Windows页内存管理机制,加上Page_ReadWrite或者其他属性。

代码区:在PE文件中是.code段,一般来说都是只读段,也是在程序加载的时候被加载进内存。page 设置为Page_ReadOnly。

可以参考:Windows内存管理

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧