如何释放结构中的char数组



我看到你可以在struct中释放char*指针,但你如何在struct 中释放char[N]

typedef struct Edge
{
char number[13];
int numOfCalls;
struct Edge *next;
} Edge;

当我这样做的时候,我得到一个错误

Edge *edge = malloc(sizeof(Edge));
edge->next = NULL;
strcpy(edge->number,numberOne);  // numberOne is also a char[13];
free(edge->number);
free(edge);

如果在struct中使用char数组(char number[13](,则不必对数组使用mallocfree。一旦对结构Edge执行malloc,内存中也会有数字空间。

总之,如果您使用char指针作为struct Edge的成员,则需要为char指针提供mallocfree内存空间,但在您的情况下不必这样做。因此,删除free(edge->number)行。

结构体Edgenumber的寿命是自动的。即使动态分配了一个Edge结构,当free该结构时,也会为char数组释放内存。

最新更新