在C下什么情况下函数realloc会返回Null?

时间:2014-05-30 07:37:50

标签: c++ c realloc

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

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

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

相关问题