MISRA C ++(规则18-4-1)和动态内存分配 - 是否允许使用std :: string?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MISRA C ++(规则18-4-1)和动态内存分配 - 是否允许使用std :: string?相关的知识,希望对你有一定的参考价值。
MISRA C ++规则18-4-1说:
不应使用动态堆内存分配。
见:http://dist.sonarsource.com/reports/coverage/misra_c++_2008.html
根据这个规则,std::string
是否允许在MISRA C ++规则下,因为std::string
确实在字符串变大时分配内存。还有像std::stringstream
这样的课程呢?
答案
不,托管的std::string
和std::stringstream
将不被允许。如果您在嵌入式系统上进行编程,那么您很可能不会使用这些结构。嵌入式系统很少需要完整的标准库(尤其是像std::stringstream
那样庞大而缓慢的东西)以及随之而来的一切,包括RTTI,异常,动态内存分配等。
如果您正在使用某种类型的STL,那么它要么是手写的,要么专门针对嵌入式系统。除非您正在编写操作系统内核,否则他们更可能使用静态内存分配器或其他策略而不是动态分配。
因此,如果您在嵌入式系统中询问“我可以使用std :: stringstream”,那么您已经来自一个不好的前提,不应该为安全关键设备编写软件。
以上是关于MISRA C ++(规则18-4-1)和动态内存分配 - 是否允许使用std :: string?的主要内容,如果未能解决你的问题,请参考以下文章