☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

避免动态内存分配

2.24 ID_dynamicAllocation
目录 › next › previous

标准库提供的动态内存分配方法,其算法或策略不在使用者的控制之内,很多细节是标准没有规定的,而且也是内存耗尽等问题的根源,有高可靠性要求的嵌入式系统应避免动态内存分配。

在内存资源有限的环境中,由于难以控制具体的分配策略,很可能会导致已分配的空间用不上,未分配的空间不够用的情况。而在资源充足的环境中,也应尽量避免动态分配,如果能在栈上创建对象,就不应采用动态分配的方式,以提高效率并降低资源管理的复杂性。

示例:

void foo() {
    std::vector<int> v;   // Non-compliant
    ....
}

例中 vector 容器使用了动态内存分配方法,容量的增长策略可能会导致内存空间的浪费,甚至使程序难以稳定运行。

依据

ISO/IEC 9899:1999 7.20.3 ISO/IEC 9899:2011 7.22.3

参考

C++ Core Guidelines R.5 MISRA C 2004 20.4 MISRA C 2012 21.3 MISRA C++ 2008 18-4-1
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.