您现在的位置是:主页 > news > 网站建设的一般步骤包括/营销推广有哪些公司

网站建设的一般步骤包括/营销推广有哪些公司

admin2025/6/16 7:59:48news

简介网站建设的一般步骤包括,营销推广有哪些公司,日本软银集团市值多少亿,工信部网站备案怎么查linux 开源内存泄露检测工具: valgrind 1. valgrind 介绍1.1 valgrind 下载地址:1.2 安装1.3 valgrind 的简单用法1.4 valgrind 结果2. valgrind 亲测及问题解决2.1 xxx项目有个内存泄露,用 valgrind 检测出来2.2 原因:2.3 修改1.…

网站建设的一般步骤包括,营销推广有哪些公司,日本软银集团市值多少亿,工信部网站备案怎么查linux 开源内存泄露检测工具: valgrind 1. valgrind 介绍1.1 valgrind 下载地址:1.2 安装1.3 valgrind 的简单用法1.4 valgrind 结果2. valgrind 亲测及问题解决2.1 xxx项目有个内存泄露,用 valgrind 检测出来2.2 原因:2.3 修改1.…

linux 开源内存泄露检测工具: valgrind

  • 1. valgrind 介绍
    • 1.1 valgrind 下载地址:
    • 1.2 安装
    • 1.3 valgrind 的简单用法
    • 1.4 valgrind 结果
  • 2. valgrind 亲测及问题解决
    • 2.1 xxx项目有个内存泄露,用 valgrind 检测出来
    • 2.2 原因:
    • 2.3 修改

1. valgrind 介绍

Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具。
Valgrind可以检测内存泄漏和内存违例,还可以分析cache的使用等,灵活轻巧而又强大。

参考:
https://blog.csdn.net/u012662731/article/details/78652651

1.1 valgrind 下载地址:

https://www.valgrind.org/downloads/current.html#current

下载: Valgrind 3.16.1 即可

Valgrind 3.16.1
valgrind 3.16.1 (tar.bz2) [17MB] - 22 June 2020.

1.2 安装

下载最新版的valgrind,按照里面的README提示,安装后就可以使用这个工具来检测内存泄露和内存越界等

/configure
make
sudo make install

这是一个没有界面的内存检测工具,安装后,输入 valgrind ls -l 验证一下该工具是否工作正常(这是README里面的方法,实际上是验证一下对ls -l命令的内存检测),如果你看到一堆的信息说明你的工具可以使用了。

1.3 valgrind 的简单用法

参考:
https://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html

使用命令:
test为进程名字

valgrind --tool=memcheck --leak-check=full ./test

1.4 valgrind 结果

执行检测后, valgrind 会打印很多很多……
你可以保存本地文本方便查看,其中如果有内存泄露,搜索 write 关键字即可
其他参考 上面的链接,有更加详细的说明

2. valgrind 亲测及问题解决

2.1 xxx项目有个内存泄露,用 valgrind 检测出来

检测结果,只保留重要部分

==336057== Invalid write of size 2
==336057==    at 0x40948C: _xxx_XxxxProc (xxxxk_proc.c:1063)
==336057==    by 0x40B746: _xxx_thread_ProcTaskList (xxxx_thread.c:179)
==336057==    by 0x40BA5B: _xxx_thread_ProcMain (xxxx_thread.c:284)
==336057==    by 0x5AA9E24: start_thread (in /usr/lib64/libpthread-2.17.so)
==336057==    by 0x5DBCBAC: clone (in /usr/lib64/libc-2.17.so)
==336057==  Address 0x6695d26 is 6 bytes inside a block of size 3,520 free'd
==336057==    at 0x4C2AD1D: free (vg_replace_malloc.c:530)
==336057==    by 0x4098EF: XXX_DestroyYyyyTask (xxxxk_proc.c:1324)
==336057==    by 0x40981F: XXX_SCAN_DecXxxxkRef (xxxxk_proc.c:1263)
==336057==    by 0x409487: _xxx_XxxxProc (xxxxk_proc.c:1062)
==336057==    by 0x40B746: _xxx_thread_ProcTaskList (xxxx_thread.c:179)
==336057==    by 0x40BA5B: _xxx_thread_ProcMain (xxxx_thread.c:284)
==336057==    by 0x5AA9E24: start_thread (in /usr/lib64/libpthread-2.17.so)
==336057==    by 0x5DBCBAC: clone (in /usr/lib64/libc-2.17.so)

2.2 原因:

if((ERROR_SUCCESS == ulRet) && (DTQ_IsEmpty(&(pstXxxTask->stSubFileList))))
{if(BOOL_FALSE == pstXxxTask->bIsScan){DLOG_DEBUG("[SYN ]: XxxxProc success , call DecXxxxkRef.\n");XXX_SCAN_DecXxxxkRef(pstXxxTask);  // pstXxxTask 这里 已经将其释放  后面又写了 pstXxxTask->bIsScan = BOOL_TRUE;pstXxxTask->bIsFinished = BOOL_TRUE;}}

2.3 修改

pstXxxTask->bIsScan = BOOL_TRUE;
pstXxxTask->bIsFinished = BOOL_TRUE;
XXX_SCAN_DecXxxxkRef(pstXxxTask);