【发布时间】:2014-04-04 02:28:55
【问题描述】:
当你调用realloc()时,你应该在将返回的指针分配给作为参数传递给函数的指针之前检查函数是否失败......
我一直遵守这条规则。
现在,当您确定内存将被截断而不是增加时,是否有必要遵循此规则?
我从未见过它失败。只是想知道我是否可以保存一些说明。
【问题讨论】:
-
考虑一下,如果实现发现您的较小分配可能驻留在内存中的其他位置怎么办? (特别是当内存有些碎片化时)在这种情况下,实现不需要返回相同的内存位置。
-
@JeffMercado - 我看不出所提问题与您的评论之间有什么关系。问题是 realloc() 操作在这种情况下会失败吗?
-
@martinkunev:问题是询问是否有必要测试是否应该测试会使块更小的
realloc()调用。答案是肯定的。实现可以自行决定尝试分配一个新块并将项目移动到该块。新分配可能会失败,因此必须检查。我评论的最后一点指出,假设收缩操作总是返回相同的块是不正确的。