Maison >développement back-end >Golang >Comment puis-je copier en toute sécurité des chaînes Go vers des pointeurs C char * à l'aide de CGO ?

Comment puis-je copier en toute sécurité des chaînes Go vers des pointeurs C char * à l'aide de CGO ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-19 04:23:07892parcourir

How Can I Safely Copy Go Strings to C char * Pointers Using CGO?

Copie de chaînes Go vers des pointeurs C char * via CGO

Afin de copier une chaîne Go dans un pointeur C char * via CGO, il est essentiel de respecter la syntaxe correcte et de suivre les directives de gestion de la mémoire appropriées.

Contrairement à votre approche initiale, la bonne méthode consiste à utiliser le Fonction C.CString pour transformer la chaîne Go en chaîne C. Cette fonction alloue de la mémoire pour stocker la chaîne C :

cstr = C.CString(str)

Il est important de noter que même si C.CString vous alloue de la mémoire, il n'assume pas la responsabilité de la libérer. Par conséquent, il est de votre obligation de libérer explicitement cette mémoire en utilisant un appel à :

C.free(unsafe.Pointer(cstr))

En suivant ces directives, vous pouvez copier en toute sécurité et efficacement les chaînes Go dans des pointeurs C char *, permettant une interopérabilité transparente entre ces langages. dans vos candidatures CGO.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn