【发布时间】:2021-11-06 22:17:57
【问题描述】:
假设我只有malloced x 字节的内存,在对它们做了一些事情之后,我想realloc y < x 字节。我可以做到这一点,同时确保我的realloc 会找到足够的内存吗?例如,
int *p = malloc(10);
if (p != NULL) {
// Do something with `p`.
int *p_ = realloc(p, 5);
// Keep doing something else.
}
我是否应该确保p_ 不是NULL,即使我重新分配的内存比原来的少?我认为*alloc函数在请求的内存超过可用内存时返回NULL,之前的代码可以安全使用吗?
【问题讨论】:
-
由于
realloc被记录为能够失败,您当然应该始终检查返回值。它会在你的场景中失败吗? - 可能不会,但不能保证。 -
"我应该确保 p_ 不为 NULL"。是的你应该。为什么要冒险?它不太可能失败,但不能保证它不会。
-
你必须检查 NULL
标签: c memory malloc allocation