gpt4 book ai didi

c++ - MISRA C++(规则 18-4-1)和动态内存分配 - 是否允许 std::string?

转载 作者:太空狗 更新时间:2023-10-29 20:34:32 26 4
gpt4 key购买 nike

MISRA C++ 规则 18-4-1 说:

Dynamic heap memory allocation shall not be used.

参见: http://dist.sonarsource.com/reports/coverage/misra_c++_2008.html

根据这条规则,std::string 在 MISRA C++ 规则下是允许的,因为 std::string 会在字符串变大时分配内存。另外,像 std::stringstream 这样的类呢?

最佳答案

不,托管的 std::stringstd::stringstream 是不允许的。而且,如果您在嵌入式系统上进行编程,则您极不可能使用这些结构。嵌入式系统很少需要完整的标准库(尤其是像 std::stringstream 这样庞大而缓慢的东西)以及它附带的一切,包括 RTTI、异常、动态内存分配等。

如果您正在使用某种类型的 STL,它要么是手写的,要么是专门针对嵌入式系统的。更有可能的是,他们将使用静态内存分配器或其他一些策略而不是动态分配,除非您正在编写操作系统内核。

因此,如果您问“我可以在嵌入式系统中使用 std::stringstream 吗”,您的前提已经很糟糕,不应该为安全关键设备编写软件。


关于c++ - MISRA C++(规则 18-4-1)和动态内存分配 - 是否允许 std::string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48089835/

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