如何在失败的realloc中释放malloc

时间:2017-02-06 23:41:16

标签: c struct malloc

我有这个结构:

var properties = propertyFactory.GetProperties(applicationName)

让我说我重新分配typedef struct person_st{ char *first_name, *last_name; int id; Date birthday; }*pPerson, Person; 几次。 在每个结构中,我还为sizeof(Person)*(++n)first_name分配空间。

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

感谢。

2 个答案:

答案 0 :(得分:6)

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

var result = debts.Select(x =>
    new 
    { 
    x.Snowball.User.Email, x.SnowballID, x.Description, x.ID, 
    x.DueDayOfMonth, 
    exY = ExecutionDate.Year, 
    exM = ExecutionDate.Month, 
    exD = x.DueDayOfMonth) 
    }).ToList()
    .Select(a => new {Email, SnowballID, Description, ID, Due=new DateTime(exY, exM, exD)})
    .ToList()

这样您可以检查realloc的返回码并安全地处理失败

答案 1 :(得分:3)

失败的realloc不会干扰原始数据,因此您仍然可以引用旧数据(假设您保留旧指针,假设失败的realloc将返回null)