【发布时间】:2020-04-24 06:11:20
【问题描述】:
我在这里的练习遇到问题 - 我想进一步了解 realloc 函数 -
如果我们发送一个指向 realloc 的指针,它分配内存失败 [返回 null] 以前分配的内存现在被释放了吗?虽然我们失败了?
ePointer = (Element*)realloc(stack->content, (sizeof(Element) * capacityOfStack(stack) * 2));
当stack->content是当然的指针时,如果我们现在失败了ePointer作为NULL,那么stack->content就不再被分配了?
非常感谢!!
【问题讨论】:
-
如果有人也能回答这个问题,那就太好了 - 如果我们重新分配到更少的字节数,那么我们将 100% 不会得到 NULL?
-
仅当重新分配成功时。与第一次尝试相同的规则。
-
C 标准中不能保证重新分配到更少的字节会成功(尽管我猜大多数实现不会失败这样的重新分配)。为了安全起见,即使在这种情况下,您也应该检查故障。失败时,您可以继续使用旧缓冲区,因为它已经足够大了。