char **test()
{
char *a[3];
a[0] = (char *) malloc(sizeof(char) *3);
a[1] = (char *) malloc(sizeof(char) *3);
a[0] = "aa";
a[1] = "bb";
return a;
}
//main
try{
char ** a;
a = test();
cout << a[0] << " " << a[1];
}
catch(std::exception){}
在VS2008編譯的,這個計劃沒能輸出「BB」,但之後我刪除了try catch塊,它竟然是「AA BB」,這是真正。原因和解決方案?嘗試捕捉在焦炭的影響**返回值
除此之外,有沒有一個具體的點到這一點(或者也許我只是錯過了一次,我看到了那些)。?你正在返回一個局部變量的地址,當你在你的主體中評估一個[]時,這個變量超出了範圍。不知道這是你的意圖,但它是**未定義的行爲**。 – WhozCraig 2013-03-01 17:28:39
爲什麼我們在C++中使用malloc? – andre 2013-03-01 17:30:43
@andre,因爲他可以和''不會拋出一個'#錯誤'作爲宏替換(當然)。 –
WhozCraig
2013-03-01 17:31:38