社区
C++ 语言
帖子详情
c++的new最大能分配多少内存
percyzhang
2005-10-27 05:02:33
unsigned int a=1500000000;
BYTE* d=new BYTE[a];
出现异常
unsigned int a=1400000000;
BYTE* d=new BYTE[a];
能申请到虚拟内存
在256M内存机器和2G内存机器上都是这样,哪位高手能给予帮助
...全文
4741
11
打赏
收藏
c++的new最大能分配多少内存
unsigned int a=1500000000; BYTE* d=new BYTE[a]; 出现异常 unsigned int a=1400000000; BYTE* d=new BYTE[a]; 能申请到虚拟内存 在256M内存机器和2G内存机器上都是这样,哪位高手能给予帮助
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
YFY
2005-10-27
打赏
举报
回复
楼主怎么要那么大内存啊。
cxyol
2005-10-27
打赏
举报
回复
堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。
doway
2005-10-27
打赏
举报
回复
#include <iostream>
int main()
{
//
unsigned int sz = 1024*1024*1024*2;
try {
char* a = new char[sz];
}
catch (...) {
std::cout << "out of memory\n";
}
return 0;
}
测试时这个会报错,但改成 1024*1024*1024*1 后还可以。证明与 Windows 所声称的一样,用户可以使用的内存不到 2G,而 new 仅仅受到这个限制。
楼主如果不想受此限制,可以换 64 位机器和操作系统。:)
oyljerry
2005-10-27
打赏
举报
回复
按照系统来说,一般每个应用程序分配4G的虚拟内存,然后系统需要占用2G,因而给应用程序的只有2G了,(不过,这个可以调整) 还要去除一些数据占用等,具体需要测试了
寻开心
2005-10-27
打赏
举报
回复
1
在启动windows2000的时候,在boot.ini当中加入/3GB
或者在windows2003的时候,在boot.ini当中加入 /4GB
可以减少一些服务占据的空间,释放最大的空间给用户使用。
这些开关给予每个应用程序3GB的空间,只保留1G的空间给系统使用
详细信息可以看这两个说明:
http://www.brianmadden.com/content/content.asp?ID=69
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dngenlib/html/msdn_ntvmm.asp
qhfu
2005-10-27
打赏
举报
回复
用new分配这么大的内存根本没有意义。默认windows堆大小是 1M
寻开心
2005-10-27
打赏
举报
回复
这个都是理论上的,
具体实际当中,系统当中有很多的应用程序,他们也会占据一些空间的
到底能够用多少,那就不能定论了
cholera
2005-10-27
打赏
举报
回复
你再换个4G的内存看看, 或是你多试几次, 把分水岭找到看看, 然后再分析
寻开心
2005-10-27
打赏
举报
回复
这个和操作系统有关系
在32位系统下理论上是4G
在windows环境下,是2G,特殊处理后,可以到3G
windows的内存管理系统正常情况下保留了2G,用户可以用的空间是2G
但是通过设置,系统可以再让出1G的空间
这个就是win32的最大限制了
具体的电脑和能不能分配,看的是‘物理内存 + 虚拟内存’只要空间大就可以分配
percyzhang
2005-10-27
打赏
举报
回复
我的虚拟内存设置到最大4G,物理内存为2G,
unsigned int a=1500000000;
BYTE* d=new BYTE[a];
就是出现异常
有没有申请大内存的方法呢
xiaocai0001
2005-10-27
打赏
举报
回复
这个?
不太清楚了~
C++
第3课:
C++
内存
泄露检测原理及案例实战
C++
第3课:
C++
内存
泄露检测原理及案例实战本课程侧重于
C++
的
内存
管理及泄露检测。我将带领大家学习OS的
内存
管理机制、
C++
的堆和栈、
内存
泄露及检测等。本课程具体的内容主要包括
C++
内存
泄露案例、VS2015
内存
泄露检测、野指针、VirtualAlloc/HeapAlloc/malloc/
new
的区别、
C++
堆和栈的
内存
管理、栈简介、堆简介、堆与栈区别、栈的
内存
分配
、Windows的虚拟
内存
技术、Windows的
内存
映射文件技术、Linux的虚拟
内存
技术、Linux的Valgrind
内存
泄露检测、Windows的VLD
内存
泄露检测、
C++
内存
泄露检测方式之对象计数、
C++
内存
泄露检测方式之重载
new
和delete、
C++
内存
泄露检测方式之智能指针等。
【
C++
】动态
内存
分配
详解(
new
/
new
[]和delete/delete[])
一、为什么需要动态
内存
分配
? 在
C++
程序中,所有
内存
需求都是在程序执行之前通过定义所需的变量来确定的。 但是可能存在程序的
内存
需求只能在运行时确定的情况。 例如,当需要的
内存
取决于用户输入。 在这些情况下,程序需要动态
分配
内存
,C ++语言将运算符
new
和delete合成在一起。 (1)特点 1.
C++
中通过
new
关键字进行动态
内存
申请 2.
C++
中的动态
内存
分配
是基于类型进行的 ...
C++
:
new
分配
内存
#include <stdio.h> #include <malloc.h> #include <iostream> using namespace std; int main() { //第一种 int* p1 =
new
int; //动态的在堆上
分配
一块
内存
(手动
分配
) cin >> *p1; cout << *p1 << endl; cout << p...
c++
中用
new
分配
内存
new
的作用和使用方法如下:
new
的作用在于可以在程序运行阶段动态
分配
内存
,
内存
的大小在运行时根据需要确定,从而 高效利用
内存
空间。
new
的使用方法如下: typeName* pointer_name =
new
typeName 使用时用户需要指定类型(指针类型和要开辟的
内存
存储的数据类型),
new
可以自动找到一个 正确长度的
内存
块,并返回
内存
块的地址。
分配
内存
失败时,默认抛出bad_al...
C++
学习10:使用
new
分配
内存
在
C++
中,可以沿用C中的malloc
分配
内存
,也可以使用
new
运算符。今天就来学习使用
new
分配
内存
。
new
的作用和使用方法:
new
的作用在于可以在程序运行阶段动态
分配
内存
,
内存
的大小在运行时根据需要确定,从而高效利用
内存
空间。
new
的使用方法如下: typeName* pointer_name =
new
typeName 1 2 使用时用户需要指定类型(指针类型和要开辟的
内存
存储的数据类型),
new
可以自动找到一个正确长度的
内存
块,并返回
内存
块的地址。
分配
内存
失败时,默认抛出bad_alloc异
C++ 语言
64,683
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章