C ++运行时中的奇怪错误

时间:2013-12-18 08:52:48

标签: c++ debugging error-handling compiler-errors runtime-error

我编写了一个代码,其中包含2-D向量作为组件。每当我提交输入时,在1/2秒后它会显示此错误

"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/

3 个答案:

答案 0 :(得分: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警告。

答案 1 :(得分:1)

我认为由于向量的内存分配量过大而导致内存不足。也许你传递的向量与内存相比要大,或者执行内存分配的代码存在缺陷并且过度分配。

如果您说系统在发生这种情况后速度变慢,这似乎是合理的,因为当您的内存耗尽时,正在进行交换,并且操作系统正在通过各种进程执行不良操作。

答案 2 :(得分:1)

您可能遇到memory leakage。当delete p指向单个元素变量时,使用p正确删除不需要的动态分配内存; delete[] p指向数组时p正确删除。如果你不这样做并继续动态分配更多的内存,最终你的操作系统将开始交换,减慢你的系统速度,以后你的程序最终会耗尽内存并在它时抛出bad_alloc异常无法分配更多内存。