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



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

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

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

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

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

如果是前者,是否最好将方法变量更改为类变量,以便它只分配一次,并且不会有碎片堆的风险?

在典型的平台上,我不相信Arduino在这方面有什么不同,int value可能不会占用内存。它将在登记册中。(小变量,局部(。如果没有,它将位于 CPU 堆栈上,该堆栈不会碎片化,并且每当函数返回时都会回收。

我不能说MyController在哪里实例化,但是每次调用do_stuff都会在堆栈上实例化一次value。一旦do_stuff离开,此内存将被释放,并且由于没有递归,因此不会同时出现多个value实例。

最新更新