常数组和内存管理

时间:2010-07-28 12:02:43

标签: c objective-c arrays memory-management constants

我在我的一个类中定义了一个常量数组:

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

在我的类的dealloc方法中,我是否需要释放此字段占用的内存?我该怎么做?我应该使用NSArrays吗?

1 个答案:

答案 0 :(得分: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属性。