保存在struct或local中的C变量?

时间:2017-11-30 11:08:38

标签: c

我在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中是否有任何优势?

2 个答案:

答案 0 :(得分:0)

在第一种情况下,只要创建了对象,就会将内存分配给数组。如果总是不需要数组,最好使用第二种情况。所有这些纯粹取决于计划要求

答案 1 :(得分:-1)

只要struct / object存在,case1数组就存在。 只有在程序运行时,case2数组才存在(因此在主体中,情况2中的内存使用量较小)。