2013-12-18 132 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異常,因爲它無法分配更多的記憶。