Menyalin Go Strings ke C char * Penunjuk Menggunakan CGO
Dalam Go, keupayaan untuk menggunakan keupayaan bahasa pengaturcaraan C melalui CGO adalah penting . Satu tugas biasa melibatkan penyalinan rentetan Go ke dalam penunjuk C char *. Walau bagaimanapun, pendekatan yang disebut dalam soalan awal:
func copy_string(cstr *C.char) { str := "foo" C.GoString(cstr) = str }
adalah salah. Kaedah yang betul untuk menyalin rentetan Go ke penunjuk C char melibatkan fungsi C.CString. Fungsi ini menukar rentetan Go kepada rentetan penamatan nol gaya C, yang boleh ditetapkan pada penunjuk char .
cstr := C.CString(str)
Adalah penting untuk ambil perhatian bahawa C.CString memperuntukkan memori untuk C rentetan gaya, tetapi tidak melepaskannya secara automatik. Untuk mengelakkan kebocoran memori, adalah penting untuk membebaskan memori yang diperuntukkan secara manual menggunakan fungsi C.free:
C.free(unsafe.Pointer(cstr))
Dengan menggunakan fungsi ini, anda boleh berjaya menyalin rentetan Go ke dalam penunjuk C char *, membolehkan penyepaduan yang lancar antara Go dan C. Ingat untuk mengendalikan pengurusan memori dengan sewajarnya untuk memastikan pelaksanaan kod yang cekap dan selamat.
Atas ialah kandungan terperinci Bagaimanakah Saya Menyalin Rentetan Go dengan Selamat ke Penunjuk C `char*` Menggunakan CGO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!