Rumah > pembangunan bahagian belakang > C++ > Mengapa Mengembalikan Rujukan kepada Pembolehubah Setempat dalam C Dianggap Amalan Buruk?

Mengapa Mengembalikan Rujukan kepada Pembolehubah Setempat dalam C Dianggap Amalan Buruk?

DDD
Lepaskan: 2024-12-05 08:48:14
asal
574 orang telah melayarinya

Why is Returning a Reference to a Local Variable in C   Considered Bad Practice?

Mengembalikan Rujukan kepada Pembolehubah Setempat

Coretan kod di bawah mengembalikan rujukan kepada pembolehubah setempat, yang secara amnya dianggap sebagai amalan buruk dalam C :

int& foo() {
    int i = 6;
    return i;
}
Salin selepas log masuk

Kod ini akan berfungsi seperti yang diharapkan, memberikan nilai pembolehubah tempatan i kepada i dalam fungsi utama. Walau bagaimanapun, ini boleh membawa kepada gelagat tidak ditentukan kerana memori pembolehubah tempatan dibebaskan apabila fungsi kembali.

Anda mungkin tertanya-tanya bagaimana ini masih berfungsi, kerana pembolehubah tempatan dialih keluar daripada memori tindanan apabila fungsi dikembalikan. Sebabnya ialah bingkai tindanan untuk fungsi itu tidak selalu dipadamkan serta-merta selepas kembali. Ini bermakna bahawa rujukan yang dikembalikan oleh foo() masih sah selepas fungsi selesai dilaksanakan.

Anda harus sedar bahawa tingkah laku ini tidak dijamin dan mungkin berbeza-beza bergantung pada tetapan pengkompil dan pengoptimuman. Oleh itu, sebaiknya elakkan daripada mengembalikan rujukan kepada pembolehubah setempat dan sebaliknya mengembalikan salinan data jika perlu.

Atas ialah kandungan terperinci Mengapa Mengembalikan Rujukan kepada Pembolehubah Setempat dalam C Dianggap Amalan Buruk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan