gpt4 book ai didi

c - malloc 错误处理

转载 作者:太空狗 更新时间:2023-10-29 14:53:31 26 4
gpt4 key购买 nike

除了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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com