在不分配内存的情况下使用 placement new 是否安全?
Is it safe to use placement new without alocating memory?
我想将对象创建到内存中的特定位置,在我的例子中它是地址 0x64000000,这是外部 ram,我知道这个内存是空的(即没有任何东西从这个内存中写入、读取或执行)。
到目前为止它看起来很稳定。
我在 stm32f4 上运行。
像这样使用 placement new 是否有任何危险,如果有,是否有任何其他方法可以将对象创建到特定内存地址?
如果你真的知道内存是空的(堆栈和动态存储都没有使用——如果它可用,那么它就是安全的。C++ 标准在任何情况下都不能保证这样的事情- 您只能依赖硬件/运行时实现文档。
如果必须将程序移植到其他硬件,则该程序可能需要更改。它不适用于任何使用虚拟内存的系统。
我想将对象创建到内存中的特定位置,在我的例子中它是地址 0x64000000,这是外部 ram,我知道这个内存是空的(即没有任何东西从这个内存中写入、读取或执行)。 到目前为止它看起来很稳定。
我在 stm32f4 上运行。
像这样使用 placement new 是否有任何危险,如果有,是否有任何其他方法可以将对象创建到特定内存地址?
如果你真的知道内存是空的(堆栈和动态存储都没有使用——如果它可用,那么它就是安全的。C++ 标准在任何情况下都不能保证这样的事情- 您只能依赖硬件/运行时实现文档。
如果必须将程序移植到其他硬件,则该程序可能需要更改。它不适用于任何使用虚拟内存的系统。