0

我有一个函数,我需要在其中使用指向结构的指针,例如

      void func(struct Info* info){
         struct Block *p = malloc(sizeof(struct Block));
         sub_func1(p, info);         // here will fill the content pointed by p
         sub_func2(p);               // here just use content in p
         free(p);
      }

此函数在一个.c文件中,该.c文件是 ac 项目的一个文件。我想重用分配的内存,这样我就不需要经常mallocfree. 也就是说,我只做malloc一次。但是我不知道在哪里定义和指针并做malloc,有人可以提供一些建议吗?

顺便说一句,如果我在一个文件中有一些静态变量和静态函数.c,我是否需要在相应的.h文件中声明它们,比如extern static var;extern static void func();

谢谢!

4

2 回答 2

3

这有什么问题?

void func(struct Info* info){
     struct Block p;
     sub_func1(&p, info);         // here will fill p
     sub_func2(&p);               // here just use content in p
}

使用的唯一原因malloc()是如果struct Block太大而无法放入堆栈。

于 2013-05-16T23:38:23.663 回答
0

对于您的第二个问题:static变量不需要也不能在定义它们的 .c 文件之外声明。这就是它们是静态的全部意义 - 即编译单元的本地。

extern static int x;是矛盾的。

于 2013-05-16T23:46:44.543 回答