什么是内存泄漏?如何避免内存泄漏?
简介:什么是内存泄漏?如何避免内存泄漏?
学习代码
静态分配内存
学习代码
void func() { int a = 100; int *p = &a; }
在上面的这段代码中,不是动态分配内存,当函数运行结束的时候,指针p的内存就释放了,不会出现内存泄漏问题。
动态分配内存
学习代码
void func() { // 动态生成内存 但是这里没有释放,所以会出现内存泄漏问题 int *p = new int; }
改进方法
void func() { // 动态生成内存 但是这里没有释放,所以会出现内存泄漏问题 int *p = new int; delete p; // 手动释放内存 }
如何删除动态分配的数组
void func() { int *p = new int [100]; delete [] p; }
总结
动态分配内存是存储到堆上面的,需要手动去释放这个分配的空间,调用函数,静态分配内存就是存储到栈上面,会随着程序运行的结束自动释放。
后面为了更好的使用指针,c++推出来了智能指针,可以参考我的这些文章理解。