2010-08-17 6 views

Répondre

1

A l'instar des variables avec fonction scope en langage C, les littéraux de blocs dans les fonctions ont une durée de stockage automatique. Quand vous pensez à un littéral de bloc comme un type de pointeur, vous voyez ce qui peut mal tourner: Lorsque vous renvoyez un bloc d'une fonction, vous renvoyez un pointeur vers la mémoire locale, qui n'est plus valide.

La solution est d'utiliser la fonction Block_copy() chaque fois que vous voulez retourner un bloc et le Block_release() lorsque vous n'en avez plus besoin.

Plus d'informations dans this tutorial qui a une section distincte sur les blocs en C.