【C++】关于C++的堆栈及内存泄漏
作者: 郑晓 分类: 编程基础 发布于: 2012-10-31 23:02 浏览:7,438 评论(4)
先来看一下指针,指针在c++中的功能是非常强大的,但它比较危险,因为指针允许执行对计算机不友好的操作,例如,可以使用未经初始化操作的指针来访问内存或者是试图去释放同一个内存块两次。初学者在通过学习实践来习惯指针表示法和指针概念之前,指针是非常容易引起迷惑的。
在C++中,如果使用了new关键字(C++里好像叫操作符)在自由存储空间或堆上创建变量之后 而没有使用delete操作符的话,将会发生什么情况呢?
如果没有调用delete操作符,则即使包含指针的内存由于作用域规则和对象生命周期的原因而被释放,在自由存储空间上动态分配的变量或结构也将会继续存在。实际上,由于指向这些内存的指针失效,程序将无法访问自由存储空间中的结构,这种原因将会导致内存泄漏。
被泄漏的内存将在程序的整个生命周期内都不可使用,这些内存被分配出去,但无法收回。在一些极特殊的情况下,这种内存泄漏的情况可能会非常地严重,以致于应用程序的可用内存被耗尽而导致程序崩溃。另外,这种内存泄漏现象还会给一些操作系统或在相同的内存空间中运行的应用程序带来负面影响,甚至同样崩溃。
不管是多牛的程序员还是软件公司做出的软件,都有可能出现内存泄漏。养成一种好的习惯会尽可能的减少内存泄漏问题的发生,所以在使用自由存储空间上动态地分配内存后要记得及时释放它,对于new与delete操作符来说,要尽量注意同时使用。
本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。
本文永久链接: https://www.zh30.com/about-c-stack-and-memory-leaks.html
【C++】关于C++的堆栈及内存泄漏:目前有4 条留言
好几天不更新了。干嘛呢,,
正准备更新呢。。。 😀
c++不熟悉,c#懂一点,现在学java,不去折腾了
我也是只会一点儿php,C以前上学时没怎么认真学,现在感觉好难啊。。