gpt4 book ai didi

c - 如何为结构分配堆内存?

转载 作者:太空宇宙 更新时间:2023-11-04 05:22:46 26 4
gpt4 key购买 nike

我有以下代码

struct USER{

int human_id_number;

char first_name_letter;

int minutes_since_sneezing;

} *administrator;

现在我要分配堆内存

这是我的尝试

administrator *newStruct = (administor*)malloc(sizeof(administrator));

不确定这是否正确...

最佳答案

struct USER {
int human_id_number;
char first_name_letter;
int minutes_since_sneezing;
} *administrator;

这不仅仅是一个结构声明,它也是一个变量声明......它是一样的:

struct USER {
int human_id_number;
char first_name_letter;
int minutes_since_sneezing;
};

struct USER *administrator;

因此,当您随后使用 sizeof(administrator) 时,您将得到“指针的大小”...这很可能不是你想要什么。

可能想做更像这样的事情:

struct USER {
int human_id_number;
char first_name_letter;
int minutes_since_sneezing;
};

int main(void) {
struct USER *administrator;

administrator = malloc(sizeof(*administrator));
/* - or - */
administrator = malloc(sizeof(struct USER));

/* check that some memory was actually allocated */
if (administrator == NULL) {
fprintf(stderr, "Error: malloc() returned NULL...\n");
return 1;
}

/* ... */

/* don't forget to free! */
free(administrator)

return 0;
}

sizeof(*administrator)sizeof(struct USER) 都会给你“USER 结构的大小”,因此,malloc() 的结果将是指向足够内存以保存结构数据的指针。

关于c - 如何为结构分配堆内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53508753/

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