如何在C 中傳回指向局部變數的指標
在C 中,通常不鼓勵傳回指向局部變數的指標,因為當函數退出時,變數的記憶體空間可能會被釋放。然而,在某些場景下,可能有必要實現這一點。
考慮一個場景,您需要建立一個傳回指向整數的指標的函數:
int *count() { int myInt = 5; int * const p = &myInt; // Pointer to the local variable return p; }
在這種情況下,出現這個問題是因為函數退出時myInt 變數被銷毀,指標指向無效的記憶體位置。
要解決這個問題,您可以使用智慧指針,自動管理分配給變數的記憶體。例如,您可以使用 unique_ptr:
unique_ptr<int> count() { unique_ptr<int> value(new int(5)); return value; }
這裡,value 是一個 unique_ptr,用於管理動態分配的整數的記憶體。這確保了函數退出時整數的記憶體不會被釋放,從而允許您透過傳回的指標存取它:
cout << "Value is " << *count() << endl;
以上是如何安全地傳回指向 C 中局部變數的指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!