2010-07-28 2 views
2

Я определил постоянный массив в одном из моих классов, как:константного массива и управления памятью

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

В методе dealloc моего класса, мне нужно, чтобы освободить память, занятую этой области? Как мне это сделать? Должен ли я использовать NSArrays?

+0

какой язык программирования? – 2010-07-28 12:05:34

+0

В Objective C. – ar106

+0

Это вопрос C – JeremyP

ответ

3

Нет, вам не нужно освобождать статически выделенный массив. Он выделяется системой, когда процесс запускается и остается в области действия до тех пор, пока он не выйдет.

В этом случае он не нужен для нестатического массива, поскольку он содержится внутри класса и поэтому живет и умирает с классом.

Единственный раз, когда вам нужно беспокоиться о жизни, когда вы выделяете массив в куче, которая немного сложнее сделать для массива const значений:

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(); 

Только тогда вы должны беспокоиться о выпуске памяти в какой-то момент, а затем вы можете захотеть использовать свойство NSArray с сохранением семантики.

+0

Это имеет смысл. Большое спасибо. Что это было не статично? Что делать, если у меня просто был массив const? Что мне тогда делать? – ar106

+0

@ ar106: Я исправил свой ответ, чтобы охватить это. –

+0

спасибо. Это было действительно полезно. – ar106

Смежные вопросы