使用placement new构造数组的语法是什么?

时间:2019-06-12 09:03:50

标签: c++17 placement-new arrayofarrays

我试图构造要放置新的数组的数组。

我在Internet上搜索只能使用new放置来找到构造数组。但是,如果我要使用数组数组怎么办?

我不确定如何构造内部数组。

内存管理器构造函数已经分配了大容量缓冲区

内存管理器析构函数具有删除buff

节点运算符新的重载已实现

这是我的代码

map_size_x = terrain->get_map_width();
map_size_y = terrain->get_map_height();

grid_map =  new Node *[map_size_x];

for (int i = 0; i < map_size_x; ++i)
{
    //grid_map[i] = new Node[map_size_y];
    grid_map[i] = new( buf + i * sizeof(Node)) Node;

}

buf是char *,已经在其他类(例如内存管理器)中的其他地方分配了大容量的内存,并且应该足以适合sizeof Node *的宽度和高度。

Node类中实现了新的运算符重载

  void *AStarPather::Node::operator new(std::size_t size, void* buffer)
  {
     return buffer;
  }

结果似乎无法分配并且程序卡住,但是没有崩溃。 我正在使用Visual Studio 2017

0 个答案:

没有答案