这里的Parameter是我定义的一个比较大的结构体,我在这里开辟10个没有问题,为什么改成大一点的比如我改成50就出错了。我看提示bad_alloc应该是动态开辟内存没有开出来,可是我在其他工程里可以开出来,在新建的这个工程里开不出来,是vs哪里设置的问题吗?
解决方案 »
- 编译FilterASFStreaming报C2059错误
- webbrowser 获得焦点的问题。。并自动提交表单的问题!
- 合并字符串问题
- 老问题:如何做一个闪屏,我在导入位图时,老提示不能编辑>256色的位图,有解决的办法吗
- 什么时候系统处理析构函数,比如??时间还是运行到什么时候??
- 远程数据库怎么连接?一定要帮助我啊!
- 大家应该没有忘记Photoshop吧,导航器里可以拖动的框怎么实现?希望详细点,谢谢!
- 哪有现成的可以拦截的IOleCommandTarget函数第2个参数的类?
- VC++ MFC多线程运行问题
- 为何去不到当前的月份?
- 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 一个
}