new(size_t)和new [](size_t)之间的区别

时间:2017-05-16 04:26:15

标签: c++ new-operator

我试图理解new(size_t)和new运算符之间的区别。

1. A* pa = new A(); // allocates sizeof(A) and initializes A
delete pa;

2. A* aa = new A[10]; // allocates sizeof(A)*10 and initializes all As
delete[] aa;

3. void* pv = ::operator new(5); // allocates 5 bytes using "new" as allocator
delete pv;

4. void* pav = ::operator new[](5); // allocates 5 bytes using "new[]" as allocator
delete[] pav;

除了使用新的或新的[]之外,(3)和(4)之间有什么区别?根据我的理解,它们只需分配5个字节。

另外,我不明白在这种情况下为什么调用delete []而不是删除很重要(不仅仅因为我使用new []而不是new,但会发生什么不同)

0 个答案:

没有答案