【C++八股】内存泄漏

news/2025/3/15 23:21:18/

内存泄漏(Memory Leak)是指程序在动态分配内存后,未能及时释放已分配的内存,导致这些内存无法被再次使用,从而造成系统内存的浪费。随着时间的推移,内存泄漏可能导致程序性能下降,甚至系统崩溃。

内存泄漏的分类

1 )堆内存泄漏 ( Heap leak
对内存指的是程序运⾏中根据需要分配通过 malloc,realloc new 等从堆中分配的⼀块内存,再是完成后必须通过调 ⽤对应的 free 或者 delete 删掉。如果程序的设计的错误导致这部分内存没有被释放,那么此后这块内存将不会被使⽤,就会产⽣ Heap Leak.
2 )系统资源泄露( Resource Leak
主要指程序使⽤系统分配的资源⽐如 Bitmap,handle ,SOCKET 等没有使⽤相应的函数释放掉,导致系统资源的浪 费,严重刻可导致系统效能降低,系统运行不稳定。
(3)没有将积累的析构函数定义为虚函数
当基类指针指向子类对象时,如果基类的析构函数不是virtual,那么子类的析构函数将不会被调用,子类的资源没有正确释放,就会造成内存泄漏。

导致内存泄漏的操作

指针指向的改变,未释放动态分配内存

如何防止内存泄漏

将内存的分配封装在类中,构造函数分配内存,析构函数释放内存;使用智能指针

智能指针

智能指针是为了解决动态分配内存泄漏和多次释放同一内存所提出的。包括:共享指针,独占指针,弱指针

构造函数和析构函数

(1)析造函数需要设为虚函数,当派生类对象有内存回收时,若析构函数不是虚函数, 不会触发动态绑定,只会调用基类构造函数,导致派生类 资源无法释放,造成内存泄漏。
(2)构造函数不需要设为虚函数,不需要。

http://www.ppmy.cn/news/1571997.html

相关文章

django中间件,中间件给下面传值

1、新建middleware.py文件 # myapp/middleware.py import time from django.http import HttpRequest import json from django.http import JsonResponse import urllib.parse from django.core.cache import cache from comm.Db import Db class RequestTimeMiddleware:def …

post、get、delete、put请求

一、配置axios拦截器 // src/utils/request.js import axios from axios;// 创建 axios 实例 const instance axios.create({baseURL: https://api.example.com, // 你的 API 基础 URL//timeout: 10000, // 请求超时时间 });// 请求拦截器 instance.interceptors.request.use…

No module named ‘posepile.util‘

目录 No module named posepile.util 解决方法: No module named posepile.util 错误代码: import posepile.datasets3d as ds3d pip install git+https://github.com/isarandi/PosePile.git. And then, I executed the following command, " python -m metrabs_py…

五、AIGC大模型_03BERT论文与实战

1、BERT论文 论文网址:https://arxiv.org/pdf/1810.04805 1.1 论文正文内容翻译与总结 1.1.1 引言 BERT(Bidirectional Encoder Representations from Transformers)是一种新的语言表示模型,旨在通过无监督的预训练方法学习深…

数据结构-二叉树经典OJ题

文章目录 一、单值二叉树二、相同的树三、对称二叉树四、另一棵树的子树五、二叉树遍历5.1前序遍历5.2 二叉树的构建及遍历 一、单值二叉树 (链接:UnivaluedBinaryTree) bool isUnivalTree(struct TreeNode* root) {if(root NULL)return true;if(root->left …

深度学习在半导体领域的创新点研究

摘要:本论文聚焦于深度学习在半导体领域的创新应用,全面剖析其为半导体产业带来的变革与机遇。通过深入探究深度学习在半导体设计、制造、测试及质量管控等多方面的创新实践,揭示其对提升半导体性能、降低成本及增强产业竞争力的关键作用。同…

docker 部署nginx,nginx 504

遇到问题 原因: 因为用的docker 部署nginx, docker 应用与服务之间的端口未开放,导致访问不到服务。

【练习】图论

F. Friendly Group 图中选择一个点-1 边两端点都选择1 边一个端点选择-1 添加链接描述 #include<iostream> using namespace std; #include<vector> #include<cstring> const int N300010; int n,m; vector<int> G[N]; int temp1,temp2; bool vis[N…