gpt4 book ai didi

c - 具有文件作用域的 Malloced 变量 (C)

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:19 24 4
gpt4 key购买 nike

我正在尝试声明一个可用于多个 .c 文件的变量。它是指向结构的指针的 malloced 数组。

据我所知,我必须在头文件中用 extern 声明它,但是由于我不能在头文件中进行 malloc,我是否应该在头文件中声明它,然后在 .c 文件中进行 malloc?我看不出这将如何完成。

最佳答案

您将声明放在 header 中,将定义放在 .c 文件中,并将对 malloc 的调用放在函数中,该函数在您第一次取消引用指针之前执行(如 main 函数为例)。所以它看起来像这样:

foo.h:

extern struct your_struct** pointer;
void foo_init();
void foo_cleanup();

foo.c:

#include <stdlib.h>
#include "foo.h"

struct your_struct** pointer;

void foo_init() {
pointer = malloc(sizeof(your_struct*) * some_size);
// initialize the pointer in the array
}

void foo_cleanup() {
// free the pointers in the array if you used malloc to initialize them
free(pointer);
}

主.c:

#include "foo.h"

int main() {
foo_init();
// do other stuff
foo_cleanup();
return 0;
}

关于c - 具有文件作用域的 Malloced 变量 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16316902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com