假如我这样写:int *a = new i;a->~int();肯定无法通过编译,因为基本类型是没有析构函数的。然而我在做内存池时遇到一个问题就是对像释放内存时,需要内存池自动析构该对像然后收回内存空间,但并不知道该对像是不是基本类型。于是我做了如下的实验:
结果发现编译、运行正常。输出汇编查找原因:找到“析构”整型的那段。
当T为int时编译器根本没有为~T()生成任何代码,这也是编译器的聪明之处吧。