没有new的C++构造函数

C++ Constructor without new

我正在尝试在嵌入式应用程序中使用 C++。我运行变成了一个理论问题

鉴于我没有动态分配,所以我不使用 "new" 运算符。问题是关于调用对象和析构函数的构造函数。

我想将我的对象放在内存中的 x 地址。我这样声明:

Foo *myClass = (Foo *) 0x1; //for example
//I guess i need to call constructor manually ?
myClass->myClass();

那么调用构造函数而不是手动调用它的解决方案是什么。我应该自己做一个新的操作员吗?例如

void * operator new(size_t size, uint32_t address)
{
  return (void *)(address); 
}

编译器使用 arm-none-eabi-g++,目标 armv7-m

假设分配了地址0x1的内存,可以使用placement new:

Foo *myClass = new(0x1) Foo;

要销毁对象,您可以手动调用析构函数:

myClass->~Foo();