2010-07-28 5 views
2

J'ai défini une constante tableau dans une de mes classes comme:Tableau constante et gestion de la mémoire

static const float values[] = {-0.5f, -0.33f, 0.5f, -0.33f, -0.5f, 0.33f,}; 

Dans la méthode dealloc de ma classe, ai-je besoin de libérer la mémoire occupée par ce domaine? Comment fait-on ça? Dois-je utiliser NSArrays à la place?

+0

quel langage de programmation? –

+0

Dans l'objectif C. – ar106

+0

Ceci est une question C – JeremyP

Répondre

3

Non, vous n'avez jamais besoin de libérer un tableau alloué statiquement. Il est alloué par le système lorsque le processus démarre et reste dans la portée jusqu'à sa fermeture. De plus, vous n'en avez pas non plus besoin pour un tableau non-statique, puisqu'il est contenu dans la classe et qu'il vit et meurt avec la classe.

Le seul moment où vous devez vous soucier de la durée de vie est quand vous allouez le tableau sur le tas, ce qui est un peu difficile à faire pour un tableau de const valeurs:

const float *make_values() { 
    float *v = (float *)malloc(6*sizeof(float)); 
    v[0] = -0.5f; 
    v[1] = -0.33f; 
    ... 
    return v; 
} 

const float *values = make_values(); 

Alors seulement, vous devez vous vous inquiétez de libérer la mémoire à un moment donné, et vous pourriez envisager d'utiliser une propriété NSArray avec une sémantique de conservation.

+0

Cela a du sens. Merci beaucoup. Qu'est-ce que c'était n'était pas statique? Et si j'avais juste une matrice de const? Que dois-je faire alors? – ar106

+0

@ ar106: J'ai modifié ma réponse pour couvrir ceci. –

+0

Merci beaucoup. C'était vraiment utile. – ar106