【发布时间】:2017-09-16 17:44:30
【问题描述】:
我想在内存中的特定位置创建对象,在我的情况下它的地址是 0x64000000,这是外部 ram,我知道这个内存是空的(即没有任何东西从这个内存写入、读取或执行)。 到目前为止,它似乎很稳定。
我在 stm32f4 上运行这个。
像这样使用placement new有什么危险吗,如果有,有没有其他方法可以将对象创建到特定的内存地址中?
【问题讨论】:
-
如果您的应用程序是唯一使用该内存的应用程序,那么使用placement new 在其中创建对象应该是安全的。请注意,如果您的对象包含您使用的指针(直接或间接),例如
new为其分配内存,那么该内存将不会自动放置在特殊 RAM 中。例如,std::string对象不会自动将实际的字符串数据放在 RAM 中,而是放在堆中。 -
它应该是安全的,placement new 在embedded programming 中有一些用途。当然,如果不实际查看您所针对的架构的代码,就不可能只陈述。
标签: c++ oop object new-operator