delete 与 [ ] delete
c++ primer 练习 14.11 中提到:
Account *parray=new Account[100];
delete parray;
delete [] parray;
方括号的存在会使编译器获取数组大小(size)然后析构函数再被依次应用在每个元素上,一共size次。否则,只有一个元素被析构。无论哪种情况,分配的全部空间被返还给自由存储区。
我的问题是: 为什么无论哪种情况,分配的全部空间被返还给自由存储区,对于 delete parray ,为什么不是删除单个 Account 元素,而是删除了100个,编译器怎么知道parray这个指针实际指向的是数组还是单个元素,即便知道指向的是自由存储区的数组,这个数组的大小又怎么知道。难道是编译器辅助行为?