gpt4 book ai didi

c - MISRA C 建议不要使用 malloc,这是否意味着 calloc 更安全?

转载 作者:行者123 更新时间:2023-12-03 07:50:34 26 4
gpt4 key购买 nike

我已经使用 C 几年了,但直到最近才认真努力地理解未定义的行为和 C 内存泄漏的陷阱等。这是因为现在我在一些代码中多次使用 calloc。 MISRA C 建议是:避免使用容易失败的函数和结构,例如 malloc 可能会失败。我认为这意味着内存分配可能是一个问题,这是否意味着 calloc 是安全的?如果没有,建议这样做:


uint32_t *array;
array = calloc(length, 32);

或者这只是装饰门面?

感谢您的任何建议,我真的想避免不良做法。

最佳答案

任何调用都可能失败。如果没有内存可供分配,malloc 将返回 null。如果您不检查此返回值,也不为内存不足事件提供合适的处理逻辑,您的程序可能会崩溃。通常,您唯一能做的就是向用户提供有关情况的消息。

如果您处于安全关键的环境中,软件崩溃可能导致车祸,这是非常糟糕的,因此对于涉及汽车实时操作的任何循环,最好避免动态内存分配,就像是潜在的递归。

calloc 形式的门面装饰不会产生任何影响。

关于c - MISRA C 建议不要使用 malloc,这是否意味着 calloc 更安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77249702/

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