2013-05-03 12 views
-2

我寫了下面的代碼矢量壞了就扔的alloc expetion即使不訪問任何元素

#include <vector> 
#include <cmath> 
#include <cfloat> 
#include <iostream> 
#include <algorithm> 
using namespace std; 



vector< vector<double> > merge_sort(vector< vector<double> >& source, vector< vector<double> >& result){ 





} 

int main(){ 

     vector < vector<double> >test; 
     vector < vector<double> >temp; 

    merge_sort(test, temp); 

} 

和我的異常,程序關閉,我只是得到不好的alloc厚望,我不知道爲什麼,我甚至沒有訪問任何元素。

請告訴我如何解決它。

Thx提前。

+2

我沒有看到任何代碼捕捉bad_alloc異常。你怎麼知道這就是它的作用?請張貼演示問題的真實代碼。 – 2013-05-03 12:37:44

+2

你能發表一些現實的代碼嗎?還是你真的沒有回報什麼? – juanchopanza 2013-05-03 12:37:50

+1

你沒有返回任何東西,所以很有可能在清理堆棧時崩潰 – 2013-05-03 12:38:00

回答

7

你的問題是你的函數有返回類型,但你沒有返回任何東西。這給你一個未定義的行爲。請參閱第6.6.3節:

離開函數末尾的流程相當於return沒有值;這會導致值返回函數中的未定義行爲。

+0

即將發佈。 – 2013-05-03 12:39:03

+0

奇怪的是,這甚至不應該編譯,至少在Visual Studio下。 – taocp 2013-05-03 12:39:25

+3

@tacp它導致未定義的行爲。它可以編譯,如果它想。它可以做任何喜歡的事情。 :) – 2013-05-03 12:40:47

2

正如我在我的評論中所說,因爲你實際上沒有返回任何東西,你現在有未定義的行爲。當試圖清理堆棧時很可能會崩潰。