Realloc用于调整先前分配的内存块的大小?在什么情况下这个函数调用会返回一个空值?
答案 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指向的内存块未被释放(它仍然有效,并且其内容保持不变)。