关于new,很困惑,多谢
在程序中使用new申请内存时,最大可以申请的空间是多少?
是实际内存大小(256M之类的)还是虚拟内存的大小(4GB)呀?
能不能申请比实际内存要大的空间呢?
多谢了!
问题点数:20、回复次数:13Top
1 楼popoxx(我笑)回复于 2006-03-14 09:56:41 得分 0
感觉应该事4GB,因为new是在堆里面分配的,32位的系统寻址有4gbTop
2 楼lonelyforest(一生所爱)回复于 2006-03-14 09:58:28 得分 5
呵呵, 这个问题,我这里有一个 malloc 的,挑战内存极限的,你自己看看,不贴这里了。你改成new在你的机器上试试看就知道了。
http://blog.csdn.net/lonelyforest/archive/2006/03/05/615807.aspxTop
3 楼zh2817()回复于 2006-03-14 10:03:20 得分 0
使用new申请内存空间时,最大申请的空间视你程序动态运行时确定,当然不回超过你的实际内存的大小了。Top
4 楼thinkthefuture(先心动,再行动)回复于 2006-03-14 10:15:25 得分 0
参照值应该是4GBTop
5 楼Polarislee(北极星)(无房无车,飘在北京)回复于 2006-03-14 13:30:21 得分 5
4GB是不可能的,操作系统会预留空间供kernel使用,而应用程序可以使用的内存空间是kernel之外的。
对于Windows来说,kernel占用了2GB,而且应用程序还需要内存装载代码和堆栈,以及其他的数据(例如:重定向表等),所以能够分配的内存空间也要远小于2GB。Top
6 楼bohlee(我心澎湃)回复于 2006-03-14 14:20:39 得分 0
markTop
7 楼bohlee(我心澎湃)回复于 2006-03-14 14:21:21 得分 0
软件上的内存寻址是指虚拟内存寻址
Top
8 楼beginnow()回复于 2006-03-14 14:26:36 得分 1
当内存用完之后,就要小心你的硬盘了Top
9 楼blueskyxiaoxin(blueskyxiaoxin)回复于 2006-03-14 23:05:08 得分 0
呵呵,
到得了2G
I 服了 U.
早down 掉了Top
10 楼ykzhujiang(朱朱)回复于 2006-03-14 23:07:25 得分 2
用placement new可以申请大内存Top
11 楼ykzhujiang(朱朱)回复于 2006-03-14 23:11:50 得分 2
在NT Server下最多可以分配3G内存给客户Top
12 楼clzi(楚浪子-我要变强!)回复于 2006-03-14 23:42:53 得分 0
xuexi
Top
13 楼Polarislee(北极星)(无房无车,飘在北京)回复于 2006-03-15 10:25:28 得分 5
在NT Server下最多可以分配3G内存给客户
那需要windows 2000/2003的advanced server,而且要在启动的时候设定一个参数(忘了是什么参数了《Windows核心编程》里可以查到)Top




