本文已参与「新人创作礼」活动,一起开启掘金创作之路。
内存泄漏:由于疏忽或错误导致的程序未能释放已经不再使用的内存。 进一步解释: 并非指内存从物理上消失,而是指程序在运行过程中,由于疏忽或错误而失去了对该内存的控制,从而造成了内存的浪费。 常指堆内存泄漏,因为堆是动态分配的,而且是用户来控制的,如果使用不当,会产生内存泄漏。 使用 malloc、calloc、realloc、new 等分配内存时,使用完后要调用相应的 free 或 delete 释放内存,否则这块内存就会造成内存泄漏。 指针重新赋值
char *p = (char *)malloc(10);
char *p1 = (char *)malloc(10);
p = np;
开始时,指针 p 和 p1 分别指向一块内存空间,但指针 p 被重新赋值,导致 p 初始时指向的那块内存空间无法找到,从而发生了内存泄漏。
大致分为三种内存泄漏 1.堆内存泄漏:new/mallc分配内存,未使用对应的delete/free回收 2.系统资源泄漏, Bitmap, handle,socket等资源未释放 3.没有将基类析构函数定义成虚析构函数,(使用基类指针或者引用指向派生类对象时)派生类对象释放时将不能正确释放派生对象部分。 将基类析构函数定义成虚析构函数,除了会增加消耗的内存,没有其他坏处
C++ 的访问权限 c++通过三个关键字private、protected和public,来控制成员变量和成员变量的访问权限,也被称为成员访问限定符 在类的内部(定义类的代码内部),成员是可以相互访问的,没有访问权限的限制;而在类的外部(定义类的代码之外),只能通过对象去访问成员,而且通过对象只能访问public属性的成员,不能访问protected和private属性的成员