Постоянный массив и управление памятью - PullRequest
2 голосов
/ 28 июля 2010

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

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

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

1 Ответ

3 голосов
/ 28 июля 2010

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

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

Единственный раз, когда вам нужно беспокоиться о временах жизни, это когда вы выделяете массив в куче, что немного сложно сделать для массива значений 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 с сохранением семантики.

...