我有这个结构:
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
时会出现分配失败,处理所有realloc
和first_name
分配的最安全/最智能的方法是什么?在last_name
结构的重新分配失败后,还有一种方法可以释放它们吗?
感谢。
答案 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)