这里的Parameter是我定义的一个比较大的结构体,我在这里开辟10个没有问题,为什么改成大一点的比如我改成50就出错了。我看提示bad_alloc应该是动态开辟内存没有开出来,可是我在其他工程里可以开出来,在新建的这个工程里开不出来,是vs哪里设置的问题吗?
解决方案 »
- 有谁能帮忙分析下以下的调试信息?
- zhoujianhei 来接分(二)!
- 大家帮忙看看这个方法的功能,我参不透。。。
- 问一个关于对话框的问题??如何对话框的保存输入??
- PreTranslateMessage,写在这里会不会给程序带来什么坏处?
- (初学者)怎样让编译器选择从WinMain()为入口点而非main()
- "0z77568fcd"指令引用的“0X00300033”内存,该内存不能为"read" ??是不是因为装了NORTON2000??回答有分
- 请问高手,那里有软件注册序列号的生成和验证相关算法的源代码或资料(高分求购)
- 问个ADO的菜鸟级问题-----大伙接分吧。
- 求求各位VC高手,看看我的DX程序错在哪吧?
- MFC文档视图和主框架交互问题
- 用CoRegisterClassObject和CoRegisterPSClsid在进程内注册多个接口的问题
如果确实很大, 有可能因为内存碎片太多new不出来的,那么就要考虑使用内存映射CreateFileMapping()来实现
内存管理的机制的问题, 30*50 = 1500M, 因为频繁的释放和分配,你不见得有1500M的连续内存可用
注意,new出来的是连续内存,但是系统很可能有3G空闲内存,但是不见得能有1G的连续内存
内存碎片导致的不成功的概率很大
for(int i=0; i<iMax; i++)
{
p[i] = new xxxx
}
Parameter *par=NULL;
for(int i=0;i<50;++i)
{
par[i]= new Parameter;
}
……
for(int i=0;i<50;++i)
{
par[i]= new Parameter;// 30M 一个
}