没有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();
我正在尝试在嵌入式应用程序中使用 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();