gpt4 book ai didi

c - 全局结构的内存分配

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

struct ponto *ps = malloc( sizeof(struct ponto) * colunas * linhas );

我在我的 main() 中声明了这个。但是我希望所有功能都可以全局访问它。我相信这是用 realloc 制作的,并在文件开头将其声明为 null 或其他内容。这是正确的吗?

struct ponto *ps = null;

然后,当我知道数组结构所需的大小时:

ps = realloc (ps, sizeof(struct ponto) * colunas * linhas);

但这好像不行嘿嘿。有什么建议吗?

最佳答案

使 ps 全局可见需要它是一个全局变量。您可能还需要对列数和行数执行此操作。

struct ponto *ps;
int colunas, linhas;

int main()
{
colunas = /* whatever */;
linhas = /* whatever */;
ps = malloc(sizeof(struct ponto) * colunas * linhas);
/* do other stuff */
}

现在 ps 对源文件中的所有函数都是可见的,并且通过它,它们可以访问它指向的内存。

如果你有多个源文件,你必须在声明它的头文件中告诉它们 ps

struct ponto { /* whatever */ };  /* define the struct in the header */
extern struct ponto *ps;
extern int colunas, linhas;

realloc 执行完全不同的操作,它调整缓冲区 ps 指向的大小。 null 在标准 C 中不存在。

关于c - 全局结构的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4226390/

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