malloc错误处理

Ama*_*tam 5 c memory malloc memory-leaks memory-management

在使用malloc除外的内存分配期间可能发生的错误有哪些out of memory?处理这些错误的最佳策略是什么?

对于out of memory exception是否有必要释放指针,即使内存分配失败?

Att*_*ila 11

在C中没有异常(不管你是否可以在语言中使用),因此malloc信号失败的唯一方法是返回空指针.所以你必须检查返回值.如果它为0,则分配失败(无论出于何种原因)并且没有分配内存 - 没有任何可用的内容; 否则,所请求金额(*)的分配成功,您将不得不在不再需要时释放内存.

(*)注意溢出:malloc接受一个size_t参数,这很可能是无符号数.如果size * sizeof(int)使用无符号请求字节size并且乘法溢出(可能在获取值时出错size),则结果为小数. malloc()将为您返回非空值分配此少量字节,并根据实际(大)值索引返回的数组size,可能导致分段错误或其等效