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

手机怎么自己创造网站门户网站定制

手机怎么自己创造网站,门户网站定制,未满十八岁能用网上借钱吗,长沙做网站nn微联讯点很好内存泄漏是指程序动态分配的内存未能及时释放#xff0c;导致系统内存逐渐耗尽#xff0c;最终可能造成程序崩溃或性能下降。在C中#xff0c;内存泄漏通常发生在使用new或malloc等分配内存的操作时#xff0c;但没有正确地使用delete或free来释放这块内存。 在日常开发过程…   内存泄漏是指程序动态分配的内存未能及时释放导致系统内存逐渐耗尽最终可能造成程序崩溃或性能下降。在C中内存泄漏通常发生在使用new或malloc等分配内存的操作时但没有正确地使用delete或free来释放这块内存。 在日常开发过程中为了避免内存泄露一般都用智能指针去自动管理内存避免忘记释放。 1.内存泄露动态分析工具——Valgrind Valgrind是运行在linux上的程序分析工具它包含很多小工具 memcheck(内存泄露检查工具)等 1.1 安装Valgrind 下载链接https://valgrind.org/downloads/current.html#current 1.2 Valgrind简单上手和分析 参考:Linux 性能分析valgrind一之memcheck使用 命令(以下程序均可以使用此命令) valgrind --log-filevalgrind.log --toolmemcheck --leak-checkfull --show-leak-kindsall ./your_program # --log-file: 报告文件名。如果没有指定输出到stderr # --toolmemcheck: 指定Valgrind使用的工具Valgrind是一个工具集包括Memcheck、Cachegrind、Callgrind等多个工具memcheck是缺省项。 # --leak-check: 指定如何报告内存泄漏memcheck能检查多种内存使用错误内存泄漏是其中常见的一种可选值有: # - no 不报告 # - summary 显示简要信息有多少个内存泄漏。summary是缺省值。 # - yes 和 full 显示每个泄漏的内存在哪里分配。 # --show-leak-kinds: 指定显示内存泄漏的类型的组合。类型包括definite, indirect, possible,reachable。也可以指定all或none。[缺省值](https://www.zhihu.com/search?q缺省值search_sourceEntityhybrid_search_sourceEntityhybrid_search_extra{sourceType%3Aarticle%2CsourceId%3A92074597})是definite,possible。 运行一段时间后想停止进程不要kill掉需要ctrl c来结束输出的log会在上述命令中的valgrind.log中。程序1C程序使用未初始化的内存 #include stdio.h #include stdlib.h int main(void) {char *p; char c *p; printf(\n [%c]\n,c); return 0; }Valgrind重点结果信息使用未初始化的变量无效的读( 读取没有分配地址空间的区域数据 ) 73374 Use of uninitialised value of size 8 73374 at 0x400513: main (in /home/bossdog/3Growup/valgrind/test1/a.exe) 73374 73374 Invalid read of size 1 73374 at 0x400513: main (in /home/bossdog/3Growup/valgrind/test1/a.exe) 73374 Address 0x0 is not stackd, mallocd or (recently) freed程序2C程序在内存被释放后进行读/写 #include stdio.h #include stdlib.h int main(void) {char *p malloc(1);*p a; char c *p; printf(\n [%c]\n,c); free(p);c *p;return 0; }Valgrind重点结果信息: 74181 Invalid read of size 1 74181 at 0x4005E3: main (in /home/bossdog/3Growup/valgrind/test1/a.exe) 74181 Address 0x520a040 is 0 bytes inside a block of size 1 freed 74181 at 0x4C3195F: free (vg_replace_malloc.c:872) 74181 by 0x4005DE: main (in /home/bossdog/3Growup/valgrind/test1/a.exe) 74181 Block was allocd at 74181 at 0x4C2F075: malloc (vg_replace_malloc.c:381) 74181 by 0x4005A8: main (in /home/bossdog/3Growup/valgrind/test1/a.exe)程序3C程序: 内存泄露 #include stdio.h #include stdlib.h int main(void) {char *p malloc(1);*p a; char c *p; printf(\n [%c]\n,c); return 0; }Valgrind重点结果信息直接泄露 74814 1 bytes in 1 blocks are definitely lost in loss record 1 of 1 74814 at 0x4C2F075: malloc (vg_replace_malloc.c:381) 74814 by 0x400558: main (in /home/bossdog/3Growup/valgrind/test1/a.exe)程序4C程序不匹配使用malloc free 和 new delete #include stdio.h #include stdlib.h #includeiostream int main(void) {char *p (char*)malloc(1);*p a; char c *p; printf(\n [%c]\n,c);delete p;return 0; }Valgrind重点结果信息: 75341 by 0x400683: main (in /home/bossdog/3Growup/valgrind/test1/a.exe) 75341 Address 0x5b20c80 is 0 bytes inside a block of size 1 allocd 75341 at 0x4C2F075: malloc (vg_replace_malloc.c:381) 75341 by 0x400648: main (in /home/bossdog/3Growup/valgrind/test1/a.exe)程序5C程序 两次释放内存 #include stdio.h #include stdlib.h int main(void) {char *p (char*)malloc(1);*p a; char c *p;printf(\n [%c]\n,c);free(p);free(p);return 0; }Valgrind重点结果信息: 76126 Invalid free() / delete / delete[] / realloc() 76126 at 0x4C3195F: free (vg_replace_malloc.c:872) 76126 by 0x4005EA: main (in /home/bossdog/3Growup/valgrind/test1/a.exe) 76126 Address 0x520a040 is 0 bytes inside a block of size 1 freed 76126 at 0x4C3195F: free (vg_replace_malloc.c:872) 76126 by 0x4005DE: main (in /home/bossdog/3Growup/valgrind/test1/a.exe) 76126 Block was allocd at 76126 at 0x4C2F075: malloc (vg_replace_malloc.c:381) 76126 by 0x4005A8: main (in /home/bossdog/3Growup/valgrind/test1/a.exe)1.3 官方手册 官方手册 2.实际问题分析 struct image_u8 {const int32_t width;const int32_t height;const int32_t stride;uint8_t *buf; };std::shared_ptrimage_u8 image;image.reset(new image_u8({ frame_out.stFrameInfo.nWidth,frame_out.stFrameInfo.nHeight,frame_out.stFrameInfo.nWidth,new uint8_t[frame_out.stFrameInfo.nWidth * frame_out.stFrameInfo.nHeight * sizeof(uint8_t)] }));image.reset();std::shared_ptr 会自动管理 image_u8对象的生命周期但是它不会管理 buf即 uint8_t* 类型的指针所指向的内存。 当执行image.reset();之后image指针被释放重置了但是指针所指向的指针即 uint8_t*没有被释放造成了内存泄露。 记录 二级指针被释放时不会自动释放一级指针中所指向的内存。 参考https://blog.csdn.net/weixin_44477424/article/details/136417250
http://www.hkea.cn/news/14594115/

相关文章:

  • 源代码做网站酒托做哪个网站好
  • php开发网站优势米卓网站建设
  • 做外贸网站卖什么货好呢网站开发线框
  • 网站建设可行性及需求分析中文搜索引擎
  • 北京燕华工程建设有限公司网站php做网站技术
  • 优秀网站设计案例分析简诉网站建设小组的五类成员
  • fullpage wow做的网站wordpress 主题排名
  • 建设企业功能网站网站地图页面设计
  • 内蒙古建设厅官网站邯郸信息港人才招聘
  • 网站建设中的矢量图标浙江建设厅网站安全员证书查询
  • 天津市建设工程质量协会网站房产网站建站
  • 网络营销专业课程长沙seo排名收费
  • 河南艾特网站建设公司电子商务网站建设与维护期末
  • 绵阳网站排名织梦做的网站后台
  • h5开发小程序泰安seo公司
  • 企业网站seo方案河北省建设工程
  • 做网站找哪家好网站做语言切换
  • 网站带app建设如何做招聘网站效果分析
  • 品牌大气的网站设计购物网站线下推广办法
  • 网站建设市场拓展岗位wordpress 全站通知
  • 加强企业网站建设的通知淘宝网站做淘宝客
  • 网站设计与开发实例建设通网站会员免费吗
  • 上海定制化网站开发公司延吉市建设局网站
  • app跟网站的区别建行企业网站
  • 网站推广怎么推网站app开发哪家好
  • 网站制作论文致谢wordpress邮件
  • 专业网站搭建定做工作职责怎么写
  • 相亲网站用什么做的微信公众号与网站绑定
  • 天津网站制作的公司电子商务网站的开发方式有哪三种
  • 做网站可以不买域名和主机吗wordpress 更改后台地址