Articles of valgrind

getaddrinfo内存泄漏

我有这个代码获取有关IPv4地址的信息: struct addrinfo hints, *info = NULL; char addr4[INET_ADDRSTRLEN]; memset(&hints, 0, sizeof(hints)); hints.ai_socktype = SOCK_STREAM; hints.ai_family = AF_INET; if (!getaddrinfo(argv[hostPara], NULL, &hints, &info)) { inet_ntop(AF_INET, &((const sockaddr_in *)info->ai_addr)->sin_addr, addr4, INET_ADDRSTRLEN); } if (info != NULL) { freeaddrinfo(info); } 但如果我testingargv [hostPara]是“www.google.com”我从valgrind得到这个: ==3632== 168 bytes in 1 blocks are still reachable in loss record 1 of 1 […]

我应该释放由setlocale返回的指针吗?

int main(int argc, char *argv[]) { char *ret = setlocale(LC_ALL, NULL); // should I free 'ret' ??? // free(ret); return 0; } 我已经在Linux和OS X 10.10上都试过了,在Linux中,我不能调用'free',但是在OS X中,如果我不叫'free',valgrind会抱怨内存泄漏。 ==62032== Memcheck, a memory error detector ==62032== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==62032== Using Valgrind-3.11.0.SVN and LibVEX; rerun with -h for copyright info […]

使用gcc / g ++ / gdb / valgrind进行debugging时的魔术数字?

微软的Visual C ++如果没有被程序员自己初始化,就会用“幻数”填充内存。 这有助于debugging未初始化的内存。 ( 在Visual Studio C ++中,什么是内存分配表示? , 0xDEADBEEF与NULL ) 使用Linux GNU工具(g ++ / gdb)时有没有类似的function? 谢谢!

为Android获取valgrind。 valgrind正在寻找`memcheck-arm-linux`的问题

上下文正在开发一个Android应用程序,通过sh系统调用使用几个静态的可执行文件。 其中一个二进制文件最终在使用三星s4手机(但不使用模拟器或索尼Xperia tipo手机时)segfaults,所以遵循http://embetek.blogspot.com.es/2011/10/valgrind-for-arm .html与几个自定义修改(CFLAGS =' – 静态-march = armv7-a')最终得到一个 $ ldd valgrind not a dynamic executable $ file valgrind valgrind: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 3.2.0, not stripped. 加载到目标手机上(versioned android 4.2.2 kernel 3.4 …), (context.getFilesDir() + File.separator + "valgrind").canExecute()返回false。 运行sh -c PATH…valgrind告诉valgrind: can't execute: Permission denied ,状态126退出。 仿真器似乎运行内核2.6 […]

alsa – mem泄漏?

我一直在追逐内存泄漏(由'valgrind –leak-check = yes'报告),它似乎来自ALSA。 这段代码已经有一段时间在自由的世界里了,所以我猜这是我做错了。 #include <stdio.h> #include <stdlib.h> #include <alsa/asoundlib.h> int main (int argc, char *argv[]) { snd_ctl_t *handle; int err = snd_ctl_open( &handle, "hw:1", 0 ); printf( "snd_ctl_open: %d\n", err ); err = snd_ctl_close(handle); printf( "snd_ctl_close: %d\n", err ); } 输出如下所示: [root@aeolus alsa]# valgrind –leak-check=yes ./test2 ==16296== Memcheck, a memory error detector ==16296== […]

Valgrind给getline()给出错误

我有一个函数调用getline() ,它读取标准文本文件中的行。 这些行以\r\n结尾,因为这是规范所要求的,因为它是VCARD文件的“互联网标准”。 无论如何,我在OpenSUSE 11.3上通过Valgrind运行这个宝贝,并带有最新的GCC和Valgrind版本。 没有错误。 然而,由于与这个问题没有关系的原因,我把发行版切换到Back Track 4(基于Ubuntu),现在我得到了一吨Valgrind错误: ==21536== Conditional jump or move depends on uninitialised value(s) ==21536== at 0x40164A1: (within /lib/ld-2.11.1.so) ==21536== by 0x4007C04: (within /lib/ld-2.11.1.so) ==21536== by 0x4002A2C: (within /lib/ld-2.11.1.so) ==21536== by 0x4014206: (within /lib/ld-2.11.1.so) ==21536== by 0x4000C6C: (within /lib/ld-2.11.1.so) ==21536== by 0x4000856: (within /lib/ld-2.11.1.so) ==21536== ==21536== Conditional jump or move depends […]

我可以让valgrind忽略glibc库吗?

是否可以告诉valgrind忽略一些库? 特别是glibc库.. 实际问题:我有一些在正常执行中运行正常的代码。 没有泄漏等 当我尝试通过valgrind运行时,我得到核心转储和程序重新启动/停止。 核心通常指向glibc函数(通常是fseek,mutex等)。 我知道glibc / valgrind版本可能存在一些问题。 我尝试了各种valgrind版本和glibc版本,但没有运气。 有什么build议么?

valgrind – 地址 – 在大小为8的块被分配后的0字节

首先,我知道有类似的问题。 但是,我想用真正原始的C数据types有一个更普遍的简单问题。 所以在这里。 在main.c我调用一个函数来填充这些string: int main (int argc, char *argv[]){ char *host = NULL ; char *database ; char *collection_name; char *filename = ""; char *fields = NULL; char *query = NULL; … get_options(argc, argv, &host, &database, &collection_name, &filename, &fields, &query, &aggregation); 里面的get_options : if (*filename == NULL ) { *filename = (char*)realloc(*filename, strlen(*collection_name)*sizeof(char)+4); strcpy(*filename, […]

如何告诉valgrind memcheck分叉进程?

我有一个stream程x ,我想检查与valgrind泄漏。 问题是x由y运行, y依次由z运行。 我不能运行x独立,因为y和z为x设置环境,例如环境variables,命令行开关, x所需的文件等。 有什么办法可以告诉valgrind在z上运行,但是要遵循它发现的任何分叉并且报告它们? 有什么办法可以告诉valgrind遵循任何分叉,但只报告名为x的进程? 有什么办法可以告诉valgrind附加到已经运行的进程,我可以用gdb做的方式吗? 我不知道这是否重要,但我正在SuSE64 linux和valgrind-2.4.0下运行。 谢谢!

我怎样才能使用valgrind的内存configuration文件

你能告诉我如何使用valgrind的内存configuration文件? 我从googlefind的文章谈到如何使用valgrind进行内存泄漏。 我感兴趣的是如何使用内存分析(即有多less内存被什么类使用)? 谢谢。