微软官方MSDN原版Win10系统下载

现在位置: 首页  > 系统教程  > Linux教程

Linux系统中怎么使用valgrind检查内存

时间:2024-05-05 20:19:28   

大家好,今天Win10系统之家小编给大家分享「Linux系统中怎么使用valgrind检查内存」的知识,如果能碰巧解决你现在面临的问题,记得收藏本站或分享给你的好友们哟~,现在开始吧!

检查检验系统app手机版系列软件最新版本下载

  在使用Linux系统编写代码过程中,有可能会发送内存泄露的问题。所以用户就应该要学会检查内存,那么Linux如何检查内存呢?一般都是使用一些工具,本文就来介绍一下Linux系统中怎么使用valgrind检查内存。

  请看一下代码:

  #include 《stdlib.h》

  #include 《stdio.h》

  #include 《string.h》

  static void mem_leak1(void)

  {

  char *p = malloc(1);

  }

  static void mem_leak2(void)

  {

  FILE *fp = fopen(“test.txt”, “w”);

  }

  static void mem_overrun1(void)

  {

  char *p = malloc(1);

  *(short*)p = 2;

  free(p);

  }

  static void mem_overrun2(void)

  {

  char array[5];

  strcpy(array, “hello”);

  }

  static void mem_double_free(void)

  {

  char *p = malloc(1);

  free(p);

  free(p);

  }

  static void mem_use_wild_pointer(void)

  {

  char *p = (void*)0x80184800;

  *p = 1;

  }

  static void mem_free_wild_pointer(void)

  {

  char *p;

  free(p);

  }

  int main()

  {

  mem_leak1();

  mem_leak2();

  mem_overrun1();

  mem_overrun2();

  mem_double_free();

  //mem_use_wild_pointer();

  mem_free_wild_pointer();

  return 0;

  }

  常见的内存问题:

  1. 动态内存泄露;

  2. 资源泄露,这里以文件描述符为例;

  3. 动态内存越界;

  4.数组内存越界;

  5.动态内存double free;

  6.使用野指针,即未初始化的指针;

  7.释放野指针,即未初始化的指针;

  其中由于本示例代码过于简单,第6中情况,使用野指针会直接导致crash,所以在main中,并没有真正的调用那个示例代码。由于 valgrind只能检测执行到的代码,所以在后面的报告中,不会报告第6种错误情况。但是,在大型的项目中,有可能使用野指针并不会导致程序 crash。另外上面的7中情况,有些情况严格的说,实际上可以归为一类。

上一页12下一页 剩下全文

以上就是关于「Linux系统中怎么使用valgrind检查内存」的全部内容,本文讲解到这里啦,希望对大家有所帮助。如果你还想了解更多这方面的信息,记得收藏关注本站~

【此①文为Win10系统之家www.ghost580.net文①章,未经允许不得转载!】

上一篇:返回列表 下一篇:返回列表

相关文章

  • Linux系统中怎么使用valgrind检查内存

    Linux系统中怎么使用valgrind检查内存


      在使用Linux系统编写代码过程中,有可能会发送内存泄露的问题。所以用户就应该要学会检查内存,那么Linux如何检查内存呢?一般都是使用一些工具,本文就来介绍一下Linux系统中怎么使用valgrind检查内存。
      请看一下代码:
      #include《stdlib.h》
      #include《stdio.h》
      #include《string.h...
  • 怎么在Linux系统中创建和使用XFS系统

    怎么在Linux系统中创建和使用XFS系统


      XFS文件系统是一个64位的高性能文件系统,拥有非常强大的功能,原本使用于irix系统,那么如何在Linux系统中创建和挂载XFS文件系统呢?随小编一起来学习下吧。
      问题:我听说一个牛X的文件系统XFS,打算在我的磁盘上试试XFS。那格式化和挂载XFS文件系统的Linux命令是什么呢?
      XFS是高性能文件系统,SGI为他们的IRIX平台而设计。自从2001年移...
  • Linux系统中不同情况的重启命令如何使用

    Linux系统中不同情况的重启命令如何使用


      在进行Linux系统操作的时候,如果出现更换硬件、更改系统配置及死机等情况时,就需要对电脑进行重启,而不同的情形重启的方式也不同,即使用的命令不同,下面小编就给大家介绍下Linux下不同情形的重启方法。
      不同于桌面系统,作为服务器,我们较少对Linux系统进行系统重启,但在以下情形出现时,我们会对机器进行重启:
      更换硬件
      更改系统配置
      ...
  • Linux系统中如何使用uniq命令删除文本重复行

    Linux系统中如何使用uniq命令删除文本重复行


      Linux系统操作中,文本的内容难免会出现重复行,如果手动删除的话,量多的时候又比较麻烦,那么有什么方法能够快速删除重复行呢?下面小编就给大家介绍下Linux中如何使用uniq命令删除重复行。
      一,uniq干什么用的
      文本中的重复行,基本上不是我们所要的,所以就要去除掉。linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个。使用uniq的...