下面三个常见程序错误都与动态内存分配有关:
1: 应用delete表达式失败,使内存无法返回空闲存储区。这被称作内存泄漏(memoryleak)。
2 : 对同一内存区应用了两次delete表达式,这通常发生在两个指针指向同一个动态分配对象的时候,这是一个很难踉踪的问题。若多个指针指向同一个对象,当通过某一个指针释放了该对象时,就会发生这样的情况。此时,该对象的内存被返回给空闲存储区,然后又被分配给某个别的对象。接着指向旧对象的第二个指针被释放,新对象也就跟着消失了。
3: 在对象被释放后读写该对象。这常常会发生因为delete表达式应用的指针没有被设置为0。这些操纵动态分配内存的错误比较容易出现,而且难于跟踪和修正。为帮助程序员更好地管理动态分配的内存C++库提供了auto_ptr类类型的支持。