创建线程时的堆栈大小默认1M,为什么看不出来内存增加

mengxiang2003 2010-04-06 02:13:51
创建一个新的线程时,进程会自动为该线程默认分配1M的栈空间。
我的理解是,系统首先应该从进程的地址空间预留(reserve)1M的地址空间(address space),然后从页面文件里面分配1M大小的物理空间与该地址空间相对应。
可是,我同时运行了100个同样的程序,从任务管理器的“committe bytes”上面根本看不出有100M内存的增加。
请问,如何,在哪里才能看到这100M内存的增加。
...全文
331 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SullenSun 2010-04-06
  • 打赏
  • 举报
回复
100个程序不可能同时运行的。。。
mengxiang2003 2010-04-06
  • 打赏
  • 举报
回复
我知道了,确实是只预留,没提交,谢谢各位
mengxiang2003 2010-04-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oyljerry 的回复:]
只是预留对应的空间,只有真正使用的时候,才会commit提交等
[/Quote]
预留reserve一段空间的目的只是不让别人使用。要想使用必须提交commit。
但通常情况下,我们使用栈上的内存都是直接使用,比如int a[100],从来没有先用virtualalloc来提交(commit)一下。
说明默认情况下,栈空间是已经被commit了,不仅仅是预留那么简单。只不过是没有物理内存与之对应,只有页面文件与之对应而已。
飞天赤狐 2010-04-06
  • 打赏
  • 举报
回复
只是预留对应的空间,只有真正使用的时候,才会commit提交等
oyljerry 2010-04-06
  • 打赏
  • 举报
回复
只是预留对应的空间,只有真正使用的时候,才会commit提交等

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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