在不丢失字符串的情况下释放结构中的char*内存



我在结构中分配一个字符串,如下所示:

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]中的数据。

最新更新