我一直在狠狠地敲打着我的頭......我在main()中創建了一個指針,我將這個指針傳遞給另一個函數。在該函數內部,該指針用於創建一個新數組(使用new運算符),數組被填充,函數結束。閱讀新的填充數組給出段錯誤
如果我再嘗試訪問元素的新數組在調用者,我得到一個段錯誤。由於使用了新的操作符,我期望新的數組處於堆狀態,因此不會被超出範圍清除......我真的不明白這一點。我忽略了什麼?我也不確切地知道該怎麼做,所以沒有運氣。
我能得到它的工作,如果我讓函數返回指針(而不是通過它),但我不想這樣做,因爲最終我想我的函數來創建一些這樣的新近創建的陣列。那麼我在這裏錯過了什麼?
這裏是一個最小的工作例如:崩潰的
#include <iostream>
#include <stdio.h>
bool getData(double *myData)
{
myData = new double[2];
if (!myData)
return false;
myData[0] = +4.53;
myData[1] = -3.25;
return true;
}
int main()
{
double *myData = NULL;
if (!getData(myData))
fprintf(stderr, "Could not get data.\n");
std::cout << myData[0] << std::endl;
std::cout << myData[1] << std::endl;
delete [] myData;
}
最完整的答案。謝謝你,先生! –