[英]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.