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

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

Mary-Kate Olsen
Libérer: 2024-11-27 05:35:14
original
787 Les gens l'ont consulté

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

Copie de chaînes Go vers un caractère C * Pointeurs à l'aide de CGO

Dans Go, la possibilité d'utiliser les capacités du langage de programmation C via CGO est importante . Une tâche courante consiste à copier des chaînes Go dans des pointeurs C char *. Cependant, l'approche mentionnée dans la question initiale :

func copy_string(cstr *C.char) {
    str := "foo"
    C.GoString(cstr) = str
}
Copier après la connexion

est incorrecte. La méthode correcte pour copier une chaîne Go vers un pointeur C char implique la fonction C.CString. Cette fonction convertit une chaîne Go en une chaîne de style C terminée par un caractère nul, qui peut être affectée à un pointeur char .

cstr := C.CString(str)
Copier après la connexion

Il est important de noter que C.CString alloue de la mémoire pour le C. -chaîne de style, mais ne la libère pas automatiquement. Pour éviter les fuites de mémoire, il est crucial de libérer manuellement la mémoire allouée à l'aide de la fonction C.free :

C.free(unsafe.Pointer(cstr))
Copier après la connexion

En utilisant ces fonctions, vous pouvez copier avec succès les chaînes Go dans les pointeurs C char *, permettant une intégration transparente entre Go et C. N'oubliez pas de gérer la gestion de la mémoire de manière appropriée pour garantir une exécution de code efficace et sûre.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal