当前位置: 首页 > news >正文

企业官网网站建设网站建设公司 温州

企业官网网站建设,网站建设公司 温州,东莞寮步华衍学校,wordpress的vieu4主题破解版1 内存泄露分析 在堆上分配的内存#xff0c;没有及时释放掉#xff0c;以便后面其它地方可以重用。在C/C中#xff0c;内存管理器不会帮你自动回收不再使用的内存。如果你忘了释放不再使用的内存#xff0c;这些内存就不能被重用#xff0c;就造成了所谓的内存泄露。 一…1 内存泄露分析 在堆上分配的内存没有及时释放掉以便后面其它地方可以重用。在C/C中内存管理器不会帮你自动回收不再使用的内存。如果你忘了释放不再使用的内存这些内存就不能被重用就造成了所谓的内存泄露。 一两处内存泄露通常不至于让程序崩溃也不会出现逻辑上的错误当然了量变会产生质变一旦内存泄露过多以致于耗尽内存后续内存分配将会失败程序可能因此而崩溃。 内存访问越界使用的内存超出了向系统申请了一块内存覆盖该空间之后的一段存储区域导致系统异常。 常见原因 1.写越界又叫缓冲区溢出所写入的数据对别人来说是随机的它也会产生不可预料的后果。 向10个字节的数组写入了20个字节;内存操作越界。 如char szText[10];memset(szText,0,30); //访问越界了10字节空间修改了30字节 2.读越界即读了不属于自己的数据如果所读的内存地址是无效的程度立刻就崩溃了。如果所读内存地址是有效的在读的时候不会出问题但由于读到的数据是随机的它会产生不可预料的后果。 内存越界访问造成的后果非常严重是程序稳定性的致命威胁之一。更麻烦的是它造成的后果是随机的表现出来的症状和时机也是随机的让BUG的现象和本质看似没有什么联系这给BUG的定位带来极大的困难。 一些工具可以够帮助检查内存越界访问的问题但也不能太依赖于工具。内存越界访问通常是动态出现的即依赖于测试数据在极端的情况下才会出现除非精心设计测试数据工具也无能为力。工具本身也有一些限制甚至在一些大型项目中工具变得完全不可用。比较保险的方法还是在编程是就小心特别是对于外部传入的参数要仔细检查。 2 内存泄漏检测工具Valgrind的安装与使用 Valgrind是一个Linux平台的内存调试工具。它允许你在Valgrind自己的环境中运行你的程序监视内存使用例如调用malloc和free(或者是C中的new和delete)。如果使用未初始化的内存数组访问越界或者忘记释放指针Valgrind就能够检测出来。使用valgrind之前 当然是要拥有它了。 2.1 Valgrind的安装 Valgrind地址https://valgrind.org/downloads/current.html Valgrind可以在线安装当然也可以使用源码安装。 如果你是Ubuntu系统直接使用以下命令安装Valgrind即可。 $sudo snap install valgrind # version 3.21.0, or $sudo apt install valgrind # version 1:3.15.0-1ubuntu9.1 Valgrind最新的版本是V3.21.0直接下载valgrind-3.21.0.tar.bz2压缩包进行源码安装。 $tar -xvf valgrind-3.21.0.tar.bz2 $./configure --prefix/usr/local/valgrind $make $sudo make install 使用以上命令valgrind就安装在你的系统里面了不管使用在线安装还是源码安装只要能安装上Valgrind就行。 2.2 valgrind的使用 valgrind能够发现使用非法的堆内存。下面就使用valgrind来查看内存泄漏。 #include stdlib.hvoid fun(void) {int* x malloc(10 * sizeof(int));x[10] 0; // problem 1: heap block overrun } // problem 2: memory leak -- x not freedint main(void) {fun();return 0; }$ gcc main.c -g -o main 值得注意的是变异需要加-g参数。 $ valgrind --toolmemcheck --leak-checkfull ./main 4813 Memcheck, a memory error detector 4813 Copyright (C) 2002-2017, and GNU GPLd, by Julian Seward et al. 4813 Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info 4813 Command: ./main 4813 4813 Invalid write of size 4 4813 at 0x10916B: fun (main.c:6) 4813 by 0x109180: main (main.c:11) 4813 Address 0x4a50068 is 0 bytes after a block of size 40 allocd 4813 at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) 4813 by 0x10915E: fun (main.c:5) 4813 by 0x109180: main (main.c:11) 4813 4813 4813 HEAP SUMMARY: 4813 in use at exit: 40 bytes in 1 blocks 4813 total heap usage: 1 allocs, 0 frees, 40 bytes allocated 4813 4813 40 bytes in 1 blocks are definitely lost in loss record 1 of 1 4813 at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) 4813 by 0x10915E: fun (main.c:5) 4813 by 0x109180: main (main.c:11) 4813 4813 LEAK SUMMARY: 4813 definitely lost: 40 bytes in 1 blocks 4813 indirectly lost: 0 bytes in 0 blocks 4813 possibly lost: 0 bytes in 0 blocks 4813 still reachable: 0 bytes in 0 blocks 4813 suppressed: 0 bytes in 0 blocks 4813 4813 For lists of detected and suppressed errors, rerun with: -s 4813 ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)可以看到有对泄漏信息进行检测有两个错误并且指出产生泄漏的代码及代码行数。
http://www.zqtcl.cn/news/16020/

相关文章:

  • 成都市建设网站公司前端性能优化有哪些方法
  • 获取网站访客qq信息最好的html5画廊显示质量html5的网站
  • flask公司网站开发上海优化外包公司
  • 专业的建设企业网站公司wordpress主题idowns
  • 网站建设的经验商家推广平台有哪些
  • 做网站卖东西赚钱吗soho建网站
  • 网站权重数据包网站制作多少钱啊
  • 课程网站建设的财务分析二手书的网站建设
  • 济南集团网站建设公司好平面设计新手兼职接单
  • seo网站优化服务合同南沙公司注册
  • 个人备案的网站可以做淘宝客吗建水县住房和城乡建设局网站
  • 上海网站优化排名长安网站建设软件
  • 手机网站商城源码wordpress no.7高级版
  • 中科网站建设家居网站建设哪家好
  • 企业在网站建设上的不足软件工程专业就业方向
  • 郑州专业手机网站制作做招聘网站用哪个cms
  • 银川公司网站建设集美区网站建设
  • 如何用dw做旅游网站目录a4网站建设
  • 模板建网站费用创意设计师是做什么的
  • 做网站上市的公司win10优化大师官网
  • 中英文双语网站站点兴城做网站推广的
  • 怎么让自己做的网站别人可以访问上海福州路附近做网站的公司
  • 台州网站专业制作做网站学习什么
  • wordpress可以做下载站吗网站建设代码容易出错
  • 三水建设网站夏天做那个网站能致富
  • 扎金花网站怎么做百度有什么办法刷排名
  • 许昌购物网站开发设计oa办公平台
  • 自建网站 备案科普重庆网站
  • 建外贸网站费用wordpress编辑器保留word格式
  • 网站建设合同的要素及签订注意事项中英文外贸网站模板 生成静态html