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出来的肯定都是在堆上的。