代码之家  ›  专栏  ›  技术社区  ›  Cerin

如何最小化嵌入式平台上的内存分配?

  •  1
  • Cerin  · 技术社区  · 7 年前

    如何在C++中最小化动态内存分配?

    我正在为Arduino Mega写一些草图,有时它会挂起来,我怀疑它正遭受内存碎片的折磨。然而,我有点不清楚何时分配变量。

    如果我有一个带方法的类 do_stuff 例如:

    class MyController{
    
    public:
        MyController(){
            ...init...
        }
    
        void do_stuff(){
            int value = 123;
        }
    };
    

    我实例化 MyController 一次,然后执行 do_stuff() 多次。程序是否动态分配 value 每次调用该方法时,还是仅在实例化该类时调用一次?

    如果是前者,那么将方法变量更改为类变量是否更好,这样它只分配一次,并且不会导致堆碎片化?

    2 回复  |  直到 7 年前
        1
  •  2
  •   MSalters    7 年前

    在典型的平台上,我不认为Arduino在这方面有什么不同, int value 可能不会占用内存。它将在登记簿中。(小变量,局部)。如果没有,它将位于CPU堆栈上,CPU堆栈不会分割,并且在函数返回时循环使用。

        2
  •  0
  •   Jerome Reinländer    7 年前

    我说不清在哪里 MyController 将被实例化,但 do_stuff 实例化 value 堆叠一次 。此内存将在 do\u资料 因为没有递归,所以不会有多个 价值 同时