August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
我们必须小心处理表面上无害的指针赋值操作,如
原因是,在代码中保证每一个new操作都对应一个delete操作实际上是很困难的。至少在suspicious()函数中,必须存在delete[]p这样的语句;这样的语句可能会释放内存资源,但也会存在某些意外使得内存的释放不会发生。我们在...中放入什么代码才能造成内存泄漏呢?我们的例子应该能为你带来一些启示并引起你对此类代码的警惕,也应令你更欣赏那些简单有力的替代程序。
当程序运行到delete语句时,p可能已不再指向我们所分配的内存资源:
上述例子中的if(x)使得我们不能够确定p的取值是否已经改变。程序也可能永远都不能到达delete语句:
程序不能到达delete语句的原因也许是程序抛出了一个异常: