Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengembalikan Penunjuk dengan Selamat kepada Pembolehubah Setempat dalam C?
Cara Mengembalikan Penunjuk kepada Pembolehubah Setempat dalam C
Dalam C , secara amnya tidak digalakkan untuk mengembalikan penunjuk kepada pembolehubah setempat , kerana ruang memori pembolehubah mungkin diagihkan apabila fungsi keluar. Walau bagaimanapun, dalam senario tertentu, mungkin perlu untuk mencapai ini.
Pertimbangkan senario di mana anda perlu mencipta fungsi yang mengembalikan penunjuk kepada integer:
int *count() { int myInt = 5; int * const p = &myInt; // Pointer to the local variable return p; }
Dalam kes ini , isu timbul kerana pembolehubah myInt dimusnahkan apabila fungsi keluar, meninggalkan penunjuk menunjuk ke memori yang tidak sah lokasi.
Untuk menangani isu ini, anda boleh menggunakan penunjuk pintar, yang secara automatik mengurus memori yang diperuntukkan kepada pembolehubah. Sebagai contoh, anda boleh menggunakan unique_ptr:
unique_ptr<int> count() { unique_ptr<int> value(new int(5)); return value; }
Di sini, nilai ialah unique_ptr yang menguruskan memori untuk integer yang diperuntukkan secara dinamik. Ini memastikan bahawa ingatan integer tidak akan dialokasikan apabila fungsi keluar, membolehkan anda mengaksesnya melalui penuding yang dikembalikan:
cout << "Value is " << *count() << endl;
Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Penunjuk dengan Selamat kepada Pembolehubah Setempat dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!