Comment gratuit une structure C?
Donné une structure, par exemple
typedef struct
{
int value;
} TestStruct;
Pourquoi le code suivant (dans le contexte d'un Objectif-C classe en cours d'exécution sur l'IPhone) lancer un "non-alignés pointeur être libéré" exception?
TestStruct ts = {33};
free(&ts);
N. B. Mon uber objectif est d'utiliser une bibliothèque en C avec beaucoup de vecteur de fonctions mathématiques, d'où la nécessité de trouver des moyen viable de mix C et Objective-C
Objective-C est tout simplement un strict sur-ensemble de C, de sorte que vous pouvez mélanger complètement.
OriginalL'auteur Ariel Malka | 2009-01-08
Vous devez vous connecter pour publier un commentaire.
Il me semble que vous essayez de libérer une pile ou une variable statique. Vous avez besoin de malloc()'d quelque chose pour être en mesure d'être libre()'d.
Essayez plutôt ceci:
Pour ceux qui sont plus familiers avec les langages orientés objet, vous trouverez peut-être utile de créer un constructeur:
Cela vous permet d'allouer une structure et de définir les valeurs en une seule étape. Rappelez-vous juste que cette valeur devrait être libéré une fois qu'il n'est plus utile:
Pas de manière directe, mais vous pouvez créer votre propre constructeur si vous le souhaitez. J'ai édité le post pour expliquer comment faire.
Merci aux personnes qui ont voté cette réponse après la modification. Je viens de recevoir dans les 10k club! 😀
Je ne comprends pas ce qui se passerait si, lorsque nous avons reçu beaucoup de votes de lecteur de la question avec réponse? Je veux dire le sens 10K club?
OriginalL'auteur Kyle Cronin
Parce que vous êtes en essayant de libérer de quelque chose qui a été alloué sur la pile. La fonction free() ne peut être appelée que sur la mémoire qui a été allouée avec malloc().
Exactement! (à partir de la Java de la personne en question 🙂
Java n'est pas une excuse... 🙂
OriginalL'auteur JSBձոգչ