我想在静态内存中分配大量类,而不是将堆用于使用 C++ 的嵌入式项目。目前,当我们对一个单独的 CPP 文件中的一个类执行以下操作时,该文件专门用于静态分配的类:
Config cfg(spi);
据我所知,这是在堆上分配的。单步执行汇编代码,我看到 malloc 最终被调用。堆栈跟踪如下所示:
malloc()
__register_exitproc()
__static_initialization_and_destruction_0()
_GLOBAL__sub_I_periodic()
__libc_init_array
<reset vector>
Config 类如下所示:
class Config
{
public:
Config(SPIDriver &spi);
virtual ~Config();
private:
SPIDriver *_spi;
}
然后实现如下所示:
Config::Config(SPIDriver &spi)
: _spi(&spi) {}
Config::~Config() {_spi = NULL;}
有什么方法可以强制 GCC 将其放置在静态内存中而不是堆中?提前致谢!