2013-12-18 101 views
1

我已经写了一个代码,其中有2-D向量作为组件。每当我给我的输入,1/2秒后,它显示了这个错误C++运行时奇怪的错误

"Terminate called after throwing an instance of ‘std::bad_alloc’ 
What(): std::bad_alloc 

This application has requested the Runtime to terminate it in an unusual way. 
Please contact the application’s support team for more information." 

,我的电脑速度变慢后,代码返回一个整数,直到我关闭该.exe文件它永远不会恢复其速度。

这是什么原因?如何避免这种错误?\ 我的代码是http://paste.ubuntu.com/6593192/

+1

显示一些代码? – Blacktempel

+1

没有你提供更多的数据,比如调试结果或者一段源代码,我们没有丝毫的想法。 – Spook

+0

首先发布som代码:你是否以正确的方式分配指针?你如何毁灭它?你是否在循环中创建向量? –

回答

3

可能的原因int i问题的重复?

int main() 
{ 
    **int i;** //1st 
    vector<int > a(6); vector<vector<int> > c; //two vectors 
    for(**int i**=0;i<6;++i)//2nd 
    cin>>a[i]; //use the 2nd 

    c=mco(a,i);//use the 1st, and it is uninitialized yet! 

奇怪的是,它不是一个错误。这两个'我实际上是在相同的范围内宣布的。即使第二次只在第一次,也没有范围。

在VS10我有一个uninitialized local variable警告。

0

我认为你的内存分配与你的载体的压倒性数额的内存不足。也许你传递的向量与你的内存相比要大一些,或者执行内存分配的代码有缺陷并且分配过度。

这个,如果你说你的系统正在放缓,这种情况发生后,当您运行的内存换出发生剧烈的和OS是做坏事的各种过程似乎是合理的。

0

您可能正在体验memory leakage。当p指向单个元素变量时,使用delete p正确删除不需要的动态分配内存,当p指向数组时,正确删除不需要的动态分配内存。如果你不这样做,并保持动态分配更多的内存,最终你的操作系统将开始交换,放慢你的系统,并且随后你的程序将最终耗尽内存并抛出bad_alloc异常,因为它无法分配更多的记忆。