Rumah > Artikel > pembangunan bahagian belakang > Mengapa Memanggil Secara Terus c_str() pada String Fungsi Mengembalikan Sampah?
Memahami Ketaksahan c_str() Invocation Direct on Function Returning String
Apabila berurusan dengan fungsi yang mengembalikan rentetan, menggunakan c_str() secara terus pada fungsi yang dikembalikan boleh membawa kepada hasil yang tidak dijangka. Dalam contoh khusus ini, c_str() cuba menukar rentetan yang dikembalikan kepada const char, tetapi const char yang terhasil menyimpan nilai sampah sebaliknya.
Isu asas terletak pada sifat sementara rentetan yang dikembalikan oleh SomeFunction(). c_str() menghasilkan penunjuk kepada rentetan sementara ini, yang tidak sah sebaik sahaja pelaksanaan fungsi selesai. Ini membawa kepada nilai sampah disimpan dalam const char*.
Untuk membetulkan isu ini, adalah penting untuk memahami perbezaan antara rujukan dan penunjuk. Walaupun rujukan memanjangkan hayat objek yang dirujuk, penunjuk objek sementara seperti c_str() tidak. Oleh itu, masalah penuding berjuntai timbul dengan charArray.
Sebaliknya, apabila anda mengisytiharkan pembolehubah rentetan baharu (str_copy) dan memberikannya nilai pulangan SomeFunction(), anda mencipta salinan rentetan sementara. Salinan ini kekal sah dan menggunakan c_str() pada str_copy mengembalikan char const* yang sah menunjuk kepada kandungan rentetan.
Atas ialah kandungan terperinci Mengapa Memanggil Secara Terus c_str() pada String Fungsi Mengembalikan Sampah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!