我看到你可以在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]
(,则不必对数组使用malloc
或free
。一旦对结构Edge执行malloc
,内存中也会有数字空间。
总之,如果您使用char指针作为struct Edge
的成员,则需要为char指针提供malloc
或free
内存空间,但在您的情况下不必这样做。因此,删除free(edge->number)
行。
结构体Edge
中number
的寿命是自动的。即使动态分配了一个Edge
结构,当free
该结构时,也会为char数组释放内存。