C++语言之new和delete管理动态内存的三个常见问题

在C++语言中,使用new和delete管理动态内存存在的三个常见问题:

1、忘记delete内存
忘记释放动态内存会导致人们常说的“内存泄露”问题,因为这种内存永远不可能被归还给自由空间了。查找内存泄露错误是非常困难的,因为通常应用程序运行很长时间后,真正耗尽内存时,才能检测到这种错误。

2、使用已经释放的对象
通过在释放内存后将指针置为空,有时可以检测出这种错误。

3、同一块内存释放两次
当有两个指针指向相同的动态分配对象时,可能发生这种错误。如果对其中一个指针进行了delete操作,对象的内存就被归还给自由空间了。如果我们随后又delete第二个指针,自由空间就可能被破坏。

相对于查找和修正这些错误来说,制造出这些错误要简单得多。坚持只使用智能指针,就可以避免所有这些问题。对于一块内存,只有在没有任何智能指针指向它的情况下,智能指针才会自动释放它。

Leave a Reply

Your email address will not be published. Required fields are marked *