首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

bad_alloc,该如何处理

2012-02-14 
bad_alloc大家好,用VS2005调试一个程序时出现如下问题,First-chance exception at 0x7c812a5b in Foacc.ex

bad_alloc
大家好,用VS2005调试一个程序时出现如下问题,

First-chance exception at 0x7c812a5b in Foacc.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0013fc28..
First-chance exception at 0x7c812a5b in Foacc.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000..
Unhandled exception at 0x7c812a5b in Foacc.exe: Microsoft C++ exception: std::bad_alloc at memory location 0x0013fc28..

这个是内存溢出吧,at 0x7c812a5b in Foacc.exe,这个具体的位置 0x7c812a5b 怎么找出来啊。

由于有几个变量需要同时监测,且都是很大的矩阵,我直接用static matrix定义了几个矩阵,估计是这个地方出问题了,大家在遇到类似的问题的时候都怎么处理阿?



谢谢您的关注!

[解决办法]
检查一下,是不是空间太大了啊?
[解决办法]
直接看memory咯
再看一下你实际使用堆栈的情况,如果确实是超出最大范围,那就是溢出了!
[解决办法]
先考虑内存越界!
[解决办法]
都抛出异常了,肯定是内存分配出问题了
[解决办法]
很大的矩阵.估计的确是太大了。
用堆上申请吧。
[解决办法]
内存过大。。。把他们注释掉看看先
[解决办法]
。。。。内存分配不成功或异常。。。
[解决办法]
bad_alloc是new分配内存是失败抛出的异常. 
这种情况极有可能会发生在一次性申请很大的连续空间时, 
如vector当数据多时就很容易这样, 因为vector下一次分配内存的数量是现在有二倍
[解决办法]

C/C++ code
那些通过语言内建操作符抛出的标准异常是:   std::bad_alloc //by operator new   std::bad_cast //by operator dynamic_cast < >   std::bad_typeid //by operator typeid   std::bad_exception //thrown when an exception specification of 所以可能是你的new出问题了,加上捕捉语句吧比如try   {   int * p = new int[1000000a
[解决办法]
static matrix定义了几个矩阵
----------
一般存放在, 全局/静态存储区,这个区域较小的,你试着动态生成:new使用堆上的空间,
当然了整体不能超出内存的限制..
[解决办法]
matrix 是在静态区,matrix 的成员变量valarray <T> * v; 也在静态区
但valarray <T> * v; 指向的空间在堆上
[解决办法]
只要是new出来的肯定都是在堆上的。

热点排行