【问题标题】:How to free memory by pointer a (placement new)?如何通过指针 a 释放内存(放置新)?
【发布时间】:2017-04-28 17:57:30
【问题描述】:

我不明白如何通过指针 a 正确释放内存

MemoryManager mm;
char* a = new(mm) char[len];

【问题讨论】:

    标签: c++ delete-operator placement-new


    【解决方案1】:

    您只需调用析构函数(如果需要)并使用内存管理器解除分配

    // Deallocate memory
    MemoryManager.free(a);
    

    或者,您可以为自定义分配器定义删除运算符:

    void operator delete(void *ptr, const MemoryManager &m) {...}
    ...
    operator delete(a, mm);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-23
      • 1970-01-01
      • 2022-09-27
      • 2014-03-28
      • 1970-01-01
      • 1970-01-01
      • 2017-03-01
      • 2014-02-15
      相关资源
      最近更新 更多