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

问题描述 投票:0回答:1

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


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

还是只是装饰门面?

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

c memory malloc misra
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.