我在结构中分配一个字符串,如下所示:
struct REC {
char *name;
char *number;
};
records[records_size - 1].name = NAME;
records[records_size - 1].number = NUMBER;
其中NAME和NUMBER是*char。
当我试图在运行时释放((它们时,我保存的结构会丢失数据(我想这是因为它是一个指针,我间接释放了那个指针(。
我的问题是:如何在不丢失所有结构中的字符串数据的情况下释放内存?我唯一能想到的就是把所有指针保存在某个地方,然后在最后的for循环中释放它们。
您可以为records[rocords_size -1]
分配一个单独的内存,然后使用strcpy从NAME
指针复制数据,而不是仅将指针NEME
分配给records[rocords_size -1]
。一旦您复制了数据,我们就可以释放NAME
指针,这不会影响records[rocords_size -1]
中的数据。