除了out of memory
之外,使用malloc
进行内存分配时可能会出现哪些错误?处理这些错误的最佳策略是什么?
对于内存不足异常
,即使内存分配失败,是否有必要释放指针?
最佳答案
在 C 中没有异常(无论如何你都不能在语言中使用),所以 malloc
可以发出失败信号的唯一方法是返回一个空指针。所以你必须检查返回值。如果它是 0,则分配失败(无论出于何种原因)并且没有分配内存 - 没有任何东西可以释放;否则请求数量 (*) 的分配成功,您必须在不再需要时释放内存。
(*) 小心溢出:malloc
接受一个size_t
参数,它很可能是一个无符号数。如果您请求 size * sizeof(int)
字节且 size
无符号且乘法溢出(可能是在获取 size
的值时出错) ,结果是一个小数字。 malloc()
将为您返回的非空值分配少量字节,您可以根据 size
的实际(大)值对返回的数组进行索引,可能导致段错误或其等效
关于c - malloc 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11106237/