C ++ allows dynamic allocation of zero-sized arrays:
int* p = new int[0];
delete[] p;
我不能用这样的指针做很多事情(因为数组没有元素),但新表达式需要给我一个有效的(!= nullptr
)指针然后我必须{再次{1}}就好像它是一个真正的数组。
是否有关于这种新表达式返回的内存对齐的要求?考虑:
delete[]
struct alignas(8) Foo {
int x;
};
Foo* p = new Foo[0];
delete[] p;
是否保证指向8对齐的地址?此外,如果我编写自定义分配器,在这种情况下我是否需要返回指向对齐地址的指针?