valgrind是适用于Linux,OS X,Android和Solaris系统的动态分析工具。它可用于分析以及查找内存泄漏,竞争条件和线程错误。
这是一个用于管理停车场的 C 脚本,我有这个结构: 类型定义结构{ 字符名称[MAXSIZE]; 整数容量; char car_plates[MAXREGISTRATIONS][PLATE_SIZE]; 字符输入...
C 程序运行,但 GDB 在 main 之前失败。使用 GSL
我正在编写一个C程序,它将两个表加载为矩阵,以使用开源GSL库执行操作。编译时,程序提示需要的两个文件,并输入infi...
我正在用 C 语言编写一个小游戏,我想用 Valgrind 来测试它。 这是一个小代码示例: #包括 #包括 typedef 结构体游戏 { int** 字段; } 甘...
valgrind 告诉我,我的代码中存在以下问题: 泄漏摘要: ==18114==肯定丢失了:0个块中的0个字节 ==18114==间接丢失:0个块中的0个字节 ==18114==可能...
为什么基于 Valgrind 的 Helgrind 线程错误检测器的 3.22.0 版本会报告数据争用,而 3.18.1 版本却不会?
1.背景 以下来自 cppreference.com 的 C++ 代码说明了如何将 std::condition_variable 与 std::mutex 结合使用以促进线程间通信。 #包括<
这段代码: // g++ sfml.cpp -o sfml_test -lsfml-graphics -lsfml-window -lsfml-system #包括 #包括 int main() { sf::字体字体; 如果(!字体。
我有一个 C++(带有 Qt 6)应用程序,它似乎正常编译运行良好,并且还带有调试信息。但是,当我从 valgrind 运行它时,出现错误: 17:35:07:进程退出并返回值 Process
Valgrind:仅对于较大的输入值,地址 0x0 不会被堆栈、分配或(最近)释放
我正在尝试实现 Dijikstra,这是我拥有的图形生成代码 #包括 #包括 #包括 #包括 我正在尝试实现 Dijikstra,这是我拥有的图形生成代码 #include <stdlib.h> #include <stdio.h> #include <limits.h> #include <math.h> #define MAX 300 int main (int argc, char *argv[]){ int v = atoi(argv[1]); int SIZE = v*v; int* adjMatrix = malloc(sizeof(int)* SIZE); graphGeneration(adjMatrix, v); free(adjMatrix); return 0; } void graphGeneration(int* adj, int numV){ int i, j, r; for(i = 0; i< numV; i++){ for(j=0; j < numV; j++){ if(i == j){ adj[i * numV + j] = 0; } else{ r = rand() % MAX; adj[i * numV + j] = r; adj[j * numV + i] = r; } } } } 当我尝试输入 1000 的 v 值时,它似乎工作正常,但是当我尝试输入 v = 10,000+ 的值时,我遇到了段错误(特别是我注意到的数字是 50,000)。运行 valgrind 会导致我在该方法的标题中出现错误。 为了方便起见,重新发布在这里: Invalid write of size 4 at 0x400800: graphGeneration by 0x4006E3: main Address 0x0 is not stack'd, malloc'd or (recently) free'd Access not within mapped region at address 0x0 有人对如何调试这个有任何想法或者这里是否有任何明显的错误? 我也在 valgrind 中注意到了这一点 Warning: silly arg (-7179869184) to malloc() 我不确定这是否相关,但这似乎也是一件奇怪的事情。 看看一些 malloc() 手册:它的参数是 size_t 类型是有原因的。 int 不能保证容纳任何可能的对象大小,size_t 可以。顺便说一句,它是无符号的——负大小没有多大意义。 所以就写吧 size_t SIZE = ((size_t)v) * v; 因为你的 v 是一个 int 你必须通过强制转换参数之一来强制这个乘法作为 size_t 完成。 稍微好一点的方法是将 v 制作为 unsigned long 并使用 strtoul() 代替 atoi()。 然后,在使用之前检查您的malloc()的结果。即使使用正确的大小参数,它仍然可能返回 NULL。如果是这样,这仅仅意味着您当时没有足够的可用内存。 毕竟,使用 v=10000 并假设 int 占用四个字节(这很常见),您已经尝试一次分配 400 MB。 他是中本聪..但是这是构建项目的投资组合 不要试图理解这一点..这会让你很快发疯..
当来自 xmlDoc 的 xmlFreeNode 和 xmlNewChild 时,libxml2 发生内存泄漏
我正在构建一个程序,使用 libxml2 v2.13 在两个 xml 文件之间进行合并验证。 总之,在尝试验证 DOM 之间的一些合并时(使用
我写了一个程序来搜索几个文本文件中最长的句子: /* lngst_sentence_file_competition.c */ #包括 #包括 枚举常量{ str_len = ...
根据 valgrind 文档: 位置可以是共享对象、函数或源代码行的名称。它们分别以 obj:、fun: 或 src: 开头。函数、对象和文件名...
我在我的一些 C/C++ 进程上应用了 Valgrind,其中包含许多来自我不感兴趣且我想抑制的库的错误。我们称它们为被禁止的图书馆。亲...
我需要在我的Mac M1上安装Valgrind来检查C编程语言的内存分配。 如果无法在 Mac M1 上安装 VBox,那么在这种情况下,VBox 是最适合我的解决方案吗?或者我可以...
在 Kali VM 内的 docker 容器中运行 valgrind 时遇到问题
我正在尝试测试一个 C 程序,该程序打印字符并将转义字符处理到 docker 中的标准输出。我在 kali Linux 虚拟机中运行 docker。这是我的 dockerfile: 来自 archlinux:最新 工作目录/Lab3 ...
如何解决 Linux 内存扫描程序中未初始化值和无效读取的 Valgrind 错误
我目前正在为一项实验室作业开发一个内存扫描程序,其目标是读取和分析进程本身的内存映射,特别是从 /proc/self/maps 中读取。
我运行 valgrind 如下:- /usr/local/bin/valgrind“进程名称” 执行后它给我以下错误 ==21731== ==21731== 警告:无法执行 setuid/setgid 可执行文件: ==...
如何处理 valgrind 错误断言“VG_IS_WORD_ALIGNED(a)”失败
我们的程序的自动测试发现了 1 个模块的非常罕见的问题。测试包括使用我们的库在 valgrind (valgrind-3.18.1) 下运行示例程序。示例程序似乎完成了
我一直在开发一个小项目,就在完成间接调用下面的函数后,我开始收到 malloc:损坏的顶部大小错误。我已经使用 Valgrind 来...
我在使用 valgrind 时收到错误: ==696839== 堆摘要: ==696839== 退出时使用:1 块中 136 字节 ==696839== 总堆使用量:6 次分配,5 次释放,分配了 12,624 字节 ==
我有一个程序 myprog,我一直在 valgrind 下运行: /usr/bin/valgrind --tool=massif --tool=memcheck --leak-check=yes --track-origins=yes --log-file=/tmp/valgrind%p /opt/bin/myprog 我...