如何在失败的realloc中释放malloc

t.e*_*ari 1 c malloc struct

我有这个结构:

typedef struct person_st{
   char *first_name, *last_name;
   int id;
   Date birthday;  
}*pPerson, Person;
Run Code Online (Sandbox Code Playgroud)

让我说我重新分配sizeof(Person)*(++n)几次.在每个结构中,我也为first_name和分配空间last_name.

假设在某些时候使用时会出现分配失败realloc,处理所有first_namelast_name分配的最安全/最智能的方法是什么?它还有一种方法可以在Person结构重新排除故障后释放它们吗?

谢谢.

bru*_*ceg 6

调用realloc的最佳方法是这样的:

more_people = realloc(people, count * sizeof(Person));
if (!more_people) {
    // handle failure
} else {
    people = more_people;
}
Run Code Online (Sandbox Code Playgroud)

这样,您可以检查realloc的返回代码并安全地处理故障