gpt4 book ai didi

c - C中的结构体数组

转载 作者:行者123 更新时间:2023-11-30 14:50:40 27 4
gpt4 key购买 nike

struct a {
int a;
int b;
};

struct a* ptr = NULL;

在主线

ptr = malloc(5 * sizeof(struct a )); 
//assume is 5 is from user

为ptr[0].a和ptr[0].b赋值,与所有5个 block 类似

free(ptr);

free (ptr) 是否足以释放所有结构体数组?或者我应该明确地释放?如果是这样,怎么办?谢谢。

最佳答案

您需要释放任何内存管理函数返回的任何内容。对于嵌套的分配,您需要按照分配方式的相反顺序进行操作。 (典型的例子是创建锯齿状数组)

 void free(void *ptr);

来自7.22.3.2p2

The free function causes the space pointed to by ptr to be deallocated, that is, made available for further allocation. If ptr is a null pointer, no action occurs. Otherwise, if the argument does not match a pointer earlier returned by a memory management function, or if the space has been deallocated by a call to free or realloc, the behavior is undefined.

在您的情况下,free(ptr)足以释放动态分配的内存。如果它包含一些我们分配了动态分配内存地址的指针变量,那么您需要先释放然后再释放这个 ptr 变量。

关于c - C中的结构体数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48863066/

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