小编Som*_*guy的帖子

使用placement new c++后释放内存

我试图解决在编程 ESP8266 MCU 时遇到的一个问题,我基本上需要将一个对象声明为全局对象,这样就不会导致用户发送 HTTP 请求时其中一个库执行的回调问题,但我还需要等到从 EEPROM 获得一些数据后才能调用构造函数,因此很多人告诉我应该使用placement new,它非常适合我想要做的事情。但仍有一些我不明白的地方:在我调用该对象的构造函数之后,因为它是全局声明的,并且我试图保留它,我不应该通过调用析构函数来删除它,但我应该删除第一个我用来保存对象的指针(我不完全确定我的措辞是否正确)?

class display{
    public:
    display(int b){
        std::cout<<"the value of a: "<<b;
    }
};

char *memory= new char[sizeof(display)];
display *obj;

int main(){
    int a=69;
    obj=new(memory) display(a);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这或多或少是我在 ESP 代码中所做的事情(没有所有其他内容,但就我尝试对新的放置所做的事情而言是相同的)。我的问题是,在有人做了类似的事情之后,如果我删除*内存会导致问题还是没有必要?

c++ arduino-esp8266

0
推荐指数
1
解决办法
235
查看次数

标签 统计

arduino-esp8266 ×1

c++ ×1