如何在Windows 10控制您的鼠标滚动速度,这篇经验可以帮助你改变你的Widow10计算机上的鼠标设置,以增加你的鼠标滚动速度为您节省时间和手指的疲劳。具体方法如下:......
C/C++:[12]栈、堆和内存泄漏
在《自动存储、静态存储和动态存储》一篇中介绍自动存储通常存储在栈中,动态存储通常存储在堆中。
这一篇就简单介绍下什么是栈、堆和内存泄漏?
工具/原料
- Microsoft Visual Studio 2012(或其他版本)/
一、栈
栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。
允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom)。
插入一般称为进栈(PUSH),删除则称为退栈(POP)。
栈也称为后进先出(Last In First Out,LIFO)表。
在《自动存储、静态存储和动态存储》一篇中介绍自动存储通常存储在栈中。
在代码块执行时,其中包含的自动变量将依次加入到栈中(进栈),而代码块执行完后,则将按照相反的顺序释放这些变量(退栈)。
二、堆
堆(heap)是一类特殊的数据结构。
在《自动存储、静态存储和动态存储》一篇中介绍动态存储通常存储在堆中。
C 中new和delete管理一个内存池,在C 中称为自由存储空间(free store)或堆(heap)。
三、内存泄漏
如果使用new运算符在自由存储空间(或堆)上创建变量后,没有调用delete,将发生什么呢?
如果没有调用delete,则即使包含指针的内存由于作用域规则和生命周期的原因而被释放,在自由存储空间上动态存储的变量或结构也将继续存在。
实际上,在上述情况下,将无法访问自由空间的变量和结构,因为指向这些内存的指针无效。这将导致内存泄漏!
被泄露的内存将在整个程序声明周期内都不可使用;虽然这些内存被分配出去,但是无法收回。
在极短情况下,内存泄漏可能导致严重问题,以至于应用程序可用的内存被耗尽,出现内存耗尽错误,导致程序崩溃。
注意事项
要养成良好的习惯,同时使用new和delete运算符,在自由存储空间上动态分配内存,使用完成即释放它。
如果您觉得本文对您有所帮助,请点击右上方或者下方的“有用”,多谢!
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
标签: 内存
相关文章