在C语言中,函数realloc在什么情况下会返回Null ?

In C under what circumstances would the function realloc return Null?

本文关键字:情况下 返回 Null 在什么 realloc 语言 函数      更新时间:2023-10-16

Realloc用于调整先前分配的内存块的大小?在什么情况下这个函数调用会返回一个空值?

realloc函数无法获得更多内存来将块扩展到您所要求的大小时。这可能是因为没有可用的内存,或者虚拟空间已经耗尽(例如,在64位机器上使用16GB RAM的32位应用程序仍然不能使用超过4GB的进程空间)。

如果新大小为0,它也可能返回NULL。

请注意,在Linux(可能还有其他操作系统)中,当运行在内存有限(即内存大小小于虚拟内存大小)的系统上时,您的进程更有可能被OOM-killer杀死,而不是接收到NULL指针。

CLICK [1]: http://www.cplusplus.com/reference/cstdlib/realloc/?kw=realloc

如果函数分配请求的内存块失败,则返回空指针,并且ptr参数所指向的内存块不会被释放(它仍然有效,其内容不变)。