旗下导航:搜·么
当前位置:网站首页 > .Net教程 > 正文

C++中怎样防止内存走漏?【C#.Net教程】,C++,内存泄漏

作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:32评论:0


导读:内存走漏会形成体系内存的糟蹋,严峻会致使体系崩溃等效果。那末怎样防止内存走漏?下面本篇文章就来给人人引见一些C++中的内存走漏,相识怎样防止内存走漏,愿望对人人有所协助。【视频教程...
内存走漏会形成体系内存的糟蹋,严峻会致使体系崩溃等效果。那末怎样防止内存走漏?下面本篇文章就来给人人引见一些C++中的内存走漏,相识怎样防止内存走漏,愿望对人人有所协助。【视频教程引荐:C++教程】

内存走漏

内存走漏是指由于某些缘由(忽视或毛病)致使顺序中己动态分派的内存未能开释或没法开释的状况,它会形成体系内存的糟蹋,致使顺序运转速率减慢,以至是体系崩溃等严峻效果。

内存走漏缺点具有隐蔽性、积聚性的特性,很难被检测出。由于内存走漏的发作缘由是内存块未被开释,属于脱漏型缺点而不是错误型缺点。

C++中的内存走漏

当顺序员运用new关键字分派内存时,而且遗忘运用DeleTe()函数或Delete[]运算符重新分派内存时,内存走漏就会发作。运用毛病的delete操作符是在C++中涌现内存走漏最多的一种状况。

delete运算符应用于开释单个分派的内存空间,而delete[]运算符应用于开释数据值数组。

示例:

#include <bits/stdc++.h> 
using namespace std; 
  
// 内存走漏函数
void func_to_show_mem_leak() 
{ 
    int* ptr = new int(5); 
  
    // 主体
  
    // 返回而不开释ptr
    return; 
} 
int main() 
{ 
  
    // 挪用函数来处置惩罚内存走漏
    func_to_show_mem_leak(); 
  
    return 0; 
}

怎样防止内存走漏?

1、不要手动治理内存,能够尝试在实用的状况下运用智能指针。

2、运用std::string而不是char*。std::string类在内部处置惩罚一切内存治理,而且它速率快且优化得很好。

3、除非要与旧的lib接口,不然不要运用原始指针。

4、在C++中防止内存走漏的最好要领是尽量少地在顺序级别上举行新的/删除挪用——最好是没有。任何须要动态内存的东西都应该隐藏在一个raii对象中,当它超出局限时开释内存。raai在组织函数中分派内存并在析构函数中开释内存,如许当变量脱离当前局限时,内存就能够被开释。

5、运用了内存分派的函数,要记得运用其想用的函数开释掉内存。能够一直在new和delete之间编写代码,经由过程new关键字分派内存,经由过程delete关键字作废分派内存。

6、造就优越的编码习气,在触及内存的顺序段中,检測内存是不是发作泄漏。

示例:

#include <bits/stdc++.h>
using namespace std;
  
// 内存走漏函数
void func_to_handle_mem_leak()
{
    int* ptr = new int(5);
  
    // 主体
  
    // 运用delete删除指针ptr
    delete (ptr);
} 

int main()
{
  
    // 挪用函数来处置惩罚内存走漏
    func_to_handle_mem_leak()
  
        return 0;
}

申明:该例中没有内存糟蹋,由于当我们从函数中出来时,我们运用delete函数重新分派内存。

以上就是C++中怎样防止内存走漏?的细致内容,更多请关注ki4网别的相干文章!

标签:C++内存泄漏


欢迎 发表评论: