RT, jika saya tetapkan nilai secara langsung kepada rentetan untuk dikeluarkan menggunakan char* dan terus mengeraskan panjang rentetan ke dalam RETURN_STRINGL, hasilnya akan dikeluarkan semasa pelaksanaan, tetapi kemudian "kesalahan pembahagian, teras telah dibuang" akan dilaporkan . Tetapi jika anda menggunakan fungsi spprintf yang disyorkan secara rasmi untuk menetapkan nilai dan mendapatkan panjang, tiada ralat akan dilaporkan.
PS: Dalam kod dalam gambar, jika parameter kedua RETURN_STRINGL ditukar kepada 2, ralat yang sama akan dilaporkan saya menukarnya kepada 3 kerana saya fikir PHP akan memasukkan 0 pada penghujungnya, tetapi selepas mencubanya beberapa kali, saya mendapati bahawa ia tidak sepatutnya menjadi masalah di sini
Rentetan yang dikembalikan oleh RETURN_STRINGL mestilah memori yang diperuntukkan oleh pengurusan memori PHP Ia akan dikeluarkan oleh PHP sendiri selepas spprintf adalah pengurusan memori PHP yang digunakan. Dalam kes ini, anda boleh menetapkan parameter ketiga kepada 1, yang bermaksud bahawa PHP sendiri memperuntukkan memori yang sepadan untuk menyalin rentetan.