C++ 在C语言中,在什么情况下函数realloc会返回Null?
Realloc用于调整先前分配的内存块的大小?在什么情况下,此函数调用会返回空值?当realloc函数无法获得更多内存以将块扩展到您要求的大小时。这可能是因为实际上没有可用的内存,或者虚拟空间已耗尽,例如,在具有16GB RAM的64位计算机上,32位应用程序在进程空间中的使用量仍然不能超过4GB 如果新大小为0,它也可能返回NULL 请注意,在Linux和可能的其他操作系统中,当在内存有限的系统上运行时,即内存大小小于虚拟内存大小,您的进程更有可能被OOM killer杀死,而不是接收空指针 单击[1]:C++ 在C语言中,在什么情况下函数realloc会返回Null?,c++,c,realloc,C++,C,Realloc,Realloc用于调整先前分配的内存块的大小?在什么情况下,此函数调用会返回空值?当realloc函数无法获得更多内存以将块扩展到您要求的大小时。这可能是因为实际上没有可用的内存,或者虚拟空间已耗尽,例如,在具有16GB RAM的64位计算机上,32位应用程序在进程空间中的使用量仍然不能超过4GB 如果新大小为0,它也可能返回NULL 请注意,在Linux和可能的其他操作系统中,当在内存有限的系统上运行时,即内存大小小于虚拟内存大小,您的进程更有可能被OOM killer杀死,而不是接收空指针
如果函数未能分配请求的内存块,将返回空指针,并且参数ptr指向的内存块未解除分配,则该内存块仍然有效,且其内容保持不变。是否尝试,谷歌it?或内存碎片我不推荐这个参考。问题是如果失败了,在什么情况下会失败,而不是如何指示和处理失败。