繁体   English   中英

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

[英]Weird error in C++ runtime

我写了一个以2维向量为成分的代码。 每当我输入时,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."

之后,我的PC速度变慢,代码返回一个整数,直到关闭.exe文件,它再也没有恢复速度。

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

可能是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!

奇怪的是这不是错误。 实际上在同一个范围内声明了两个“ i”。 即使2nd仅在1nd中,也没有作用域。

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

我认为由于向量的大量内存分配,您的内存用完了。 也许与您的内存相比,您传递的向量很大,或者进行内存分配的代码存在缺陷,并且分配过多。

如果您说发生这种情况后您的系统速度变慢,这似乎是合理的,因为当内存用完时,更换会非常剧烈,并且OS会在各种进程中做坏事。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM