Effective-cpp-#16

Use the same form in corresponding uses of new and delete

动机

提出这一点的原因是,delete时被删除的内存之中究竟有多少个对象,这关乎我们需要进行多少次析构函数。往往地,如果我们new与delete不匹配就会发生内存泄漏或者未定义的行为

方法

很简单:new时用了[],delete也必须带[],否则两个都不带

还有如果需要注意的,尽量不要对数组做typedef动作,诸如

1
2
typedef std::string Addr[4];
std::string pal = new Addr;//就像new string[4]一样

因为在这种情况下,我们不知道应该匹配数组形式的delete

建议

  • new与delete的形式匹配