La fonction spprintf est-elle nécessaire pour RETURN_STRINGL dans l'extension PHP ?
PHPz
PHPz 2017-06-05 11:07:02
0
1
857

RT, si j'attribue directement une valeur à la chaîne à afficher en utilisant char* et que je code directement en dur la longueur de la chaîne dans RETURN_STRINGL, le résultat sera affiché pendant l'exécution, mais ensuite un "erreur de segmentation, le noyau a été vidé" sera signalé . Mais si vous utilisez la fonction spprintf officiellement recommandée pour attribuer une valeur et obtenir la longueur, aucune erreur ne sera signalée. Pourquoi cela ?

PS : Dans le code de l'image, si le deuxième paramètre de RETURN_STRINGL est modifié à 2, la même erreur sera signalée. Je l'ai changé en 3 car je pensais que PHP inclurait le 0 à la fin, mais après l'avoir essayé. quelques fois, j'ai trouvé que ça ne devrait pas être le problème ici

PHPz
PHPz

学习是最好的投资!

répondre à tous(1)
習慣沉默

La chaîne renvoyée par RETURN_STRINGL doit être la mémoire allouée par la gestion de la mémoire PHP. Elle sera publiée par PHP lui-même après la fin. spprintf est la gestion de la mémoire PHP utilisée. Dans ce cas, vous pouvez définir le troisième paramètre sur 1, ce qui signifie que PHP alloue lui-même la mémoire correspondante pour copier une chaîne.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!