目录
使用valgrind筛查错误
部分错误出现及其解决方法
在运行程序的时候,报错(如图):
free(): invalid pointer Aborted
使用valgrind筛查错误
valgrind使用方法及其命令在另一篇博客:http://t.csdn.cn/tAsfN
读取到以下信息:
部分错误出现及其解决方法
参考自 http://t.csdn.cn/iQvuu
Use of uninitialised value of size 4 //使用了未初始化的的地址, 这时候应该查看一下程序是否使用了未初始化的指针
Address 0x0 is not stack’d, malloc’d or (recently) free’d //这个错误原因是往错误的地址写入值, 这时候我们也应该查看一下程序用未初始化的指针赋值, 或者指针未被赋值.
Conditional jump or move depends on uninitialised value(s) //这个错误原因是使用的变量未被初始化
Invalid free() / delete / delete[] / realloc() //这个错误原因是free掉了不属于自己的空间, 错误原因有可能是指针指向的内存不再属于它了
HEAP SUMMARY: in use at exit: 412 bytes in 1 blocks total heap usage: 2 allocs, 1 frees, 924 bytes allocated //最后一个是堆内存分析, 如上面的提示所示, 程序在退出时, 仍有412字节的空间未被free
但是我的程序中并没有使用malloc分配内存,那么我接着筛查错误原因:
可能是缺少libtcmalloc-minimal4库
sudo apt-get install libtcmalloc-minimal4 //安装vim ~/.bashrc //修改配置文件export LD_PRELOAD="/usr/lib/libtcmalloc_minimal.so.4" //在配置文件里添加库路径source ~/.bashrc //执行配置文件
查看文件路径:ldconfig -p |grep libtcmalloc_minimal.so.4



