C/C++程序中堆区最大有多大?

C++语言 码拜 10年前 (2015-05-11) 1425次浏览 0个评论

为什么我在VS2012中new了如此大的空间却不会报错?char* p=new char[1024*1024*1024*1024*1024];我的物理内存为4G!

18分
因为 1024*1024*1024*1024*1024 == 0
18分
1024*1024*1024*1024*1024的结果,超出了size_t的表示范围,结果是0
4分
Linux虚拟地址空间内核占1GB,留给用户进程3GB,Windows是各占2GB,用户空间也是用户进程最大的堆申请数量了。但考虑到程序本身大小,动态库等因素,实际的堆申请数量是达不到最大值的,Linux小于3GB,Windows小于2GB。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C/C++程序中堆区最大有多大?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!