关于内存泄漏# Programming - 葵花宝典
r*q
1 楼
前几天我在这说可以用非常简单的方法解决内存泄漏的问题,很多人都不相信。
现在有几小时空闲,码几行字加以说明。首先声明以下讨论仅限C++。
首先我们把需求列一下:
1.管理一片内存或需要分配的资源,要求程序员可以完全只分配,不释放,系统
将自动在该内存或资源不再需要的时候释放。
2.程序员可以清楚地知道系统究竟在什么地方释放的资源。这样程序员就可以对
整个系统有完全的控制。
3.所使用的方法的书写复杂度与不用该方法时差不多。例如:用new/delete只写
2-3行的,用新方法最多3-4行。
4.在大多数C++编译器下面所使用的方法不能有歧义。
5.当管理内存时,可以把内存按数组访问,并且可以检测内存越界错误。同样程
序书写复杂度也不能增加。
我们再来看看C++语言本身的特性。设计C++的时候必须有一个计算机的模型,这
个模型中有的特性C++就必须支持,而没有的特性就不会出现在C++中。大多数程
序语言都是基于单带图灵机设计的,C++也不例外。在单带图灵机中,是没有线
程的概念的,所以C++也没有线程的概念。所以我们现在不考虑多线程的问题。
这并不意味着这里提出的方法无法
现在有几小时空闲,码几行字加以说明。首先声明以下讨论仅限C++。
首先我们把需求列一下:
1.管理一片内存或需要分配的资源,要求程序员可以完全只分配,不释放,系统
将自动在该内存或资源不再需要的时候释放。
2.程序员可以清楚地知道系统究竟在什么地方释放的资源。这样程序员就可以对
整个系统有完全的控制。
3.所使用的方法的书写复杂度与不用该方法时差不多。例如:用new/delete只写
2-3行的,用新方法最多3-4行。
4.在大多数C++编译器下面所使用的方法不能有歧义。
5.当管理内存时,可以把内存按数组访问,并且可以检测内存越界错误。同样程
序书写复杂度也不能增加。
我们再来看看C++语言本身的特性。设计C++的时候必须有一个计算机的模型,这
个模型中有的特性C++就必须支持,而没有的特性就不会出现在C++中。大多数程
序语言都是基于单带图灵机设计的,C++也不例外。在单带图灵机中,是没有线
程的概念的,所以C++也没有线程的概念。所以我们现在不考虑多线程的问题。
这并不意味着这里提出的方法无法