嘗試在函數內返回局部數組指針:
int* func() {
int arr[5] = {1,2,3,4,5};
return arr; // 錯誤:局部數組棧內存函數結束後釋放
}
調用者收到的是懸空指針,訪問導致未定義行為。
int* func() {
static int arr[5] = {1,2,3,4,5}; // 靜態存儲區
return arr;
}
int* func() {
int* arr = new int[5]{1,2,3,4,5};
return arr; // 調用者必須 delete[]
}
#include
vector func() {
return {1,2,3,4,5}; // 自動管理內存,支持拷貝/移動語義
}
std::vector 或 std::array,避免手動內存管理。unique_ptr。