我试图理解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,但会发生什么不同)