什么是内存泄漏?如何避免内存泄漏?

r囧r小猫 2024-03-30 09:27 175阅读 0赞

什么是内存泄漏?如何避免内存泄漏?

简介:什么是内存泄漏?如何避免内存泄漏?

学习代码

静态分配内存

学习代码

  1. void func()
  2. {
  3. int a = 100;
  4. int *p = &a;
  5. }

在上面的这段代码中,不是动态分配内存,当函数运行结束的时候,指针p的内存就释放了,不会出现内存泄漏问题。

动态分配内存

学习代码

  1. void func()
  2. {
  3. // 动态生成内存 但是这里没有释放,所以会出现内存泄漏问题
  4. int *p = new int;
  5. }

改进方法

  1. void func()
  2. {
  3. // 动态生成内存 但是这里没有释放,所以会出现内存泄漏问题
  4. int *p = new int;
  5. delete p; // 手动释放内存
  6. }

如何删除动态分配的数组

  1. void func()
  2. {
  3. int *p = new int [100];
  4. delete [] p;
  5. }

总结

动态分配内存是存储到堆上面的,需要手动去释放这个分配的空间,调用函数,静态分配内存就是存储到栈上面,会随着程序运行的结束自动释放。

后面为了更好的使用指针,c++推出来了智能指针,可以参考我的这些文章理解。
C++智能指针shared_ptr
C++智能指针unique_ptr
C++智能指针weak_ptr

发表评论

表情:
评论列表 (有 0 条评论,175人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java中如何避免内存泄漏

    在Java中,避免内存泄漏主要涉及到对象的生命周期管理和垃圾回收机制的理解。 1. **理解作用域**:变量在其作用域内创建并销毁,因此,在函数内部创建的对象,当函数返回后,

    相关 如何避免JS内存泄漏

    简介: 很多开发者可能平时并不关心自己维护的页面是否存在内存泄漏,原因可能是刚开始简单的页面内存泄漏的速度很缓慢,在造成严重卡顿之前可能就被用户刷新了,问题也就被隐藏了,但是随