我在DSP处理器上运行代码,因此资源有限。 我很困惑,有些数组应该放在对象结构中,或者在子程序中做成局部变量。像这样:
案例1 ,对象struct中的数组:
typedef struct
{
int var1;
int var2;
int array[1000];
// etc...
} obj1;
sub1( obj1* o1)
{
o1->array[x] = ... ;
}
案例2 ,数组作为局部变量:
typedef struct
{
int var1;
int var2;
} obj1;
sub1( obj1* o1)
{
int array[1000];
array[x] = ... ;
}
主循环看起来像这样:
int main(int argc, char* argv[])
{
while(1)
{
obj1 o1;
sub1( &o1 );
obj2 o2;
sub2( &o2 );
obj3 o3;
sub3( &o3 );
// etc...
}
return 0;
}
阵列不会被重复使用,所以它们可以是本地的 但是,与案例1相比,案例2中是否有任何优势?
答案 0 :(得分:0)
在第一种情况下,只要创建了对象,就会将内存分配给数组。如果总是不需要数组,最好使用第二种情况。所有这些纯粹取决于计划要求
答案 1 :(得分:-1)
只要struct / object存在,case1数组就存在。 只有在程序运行时,case2数组才存在(因此在主体中,情况2中的内存使用量较小)。