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
,可能导致分段错误或其等效