valgrind 相关问题

valgrind是适用于Linux,OS X,Android和Solaris系统的动态分析工具。它可用于分析以及查找内存泄漏,竞争条件和线程错误。

为什么我的代码中不断收到 Valgrind 设置地址范围权限警告?

我不明白我可能做错了什么,导致不断出现此 valgrind 错误。我没有泄漏任何记忆.. 在我的项目中,我必须实现一个图,一个基本的图算法,并且......

回答 1 投票 0

FreeBSD 上的 Valgrind

美好的一天! 我正在玩一个 C 项目。它位于 FreeBSD 机器上(看起来像 Raspberry PI2,不确定) 问题是我想在 Valgrind 中运行项目来查找内存泄漏。当...

回答 2 投票 0

有没有办法让 valgrind 在每次分配内存时吐出一条消息

我正在开发一个大型 C 项目,刚刚介绍了我认为是某种内存泄漏的情况。当我运行代码时,我的 RAM 很快就会被耗尽,然后当我退出程序时又会释放出来。这个...

回答 1 投票 0

有没有办法通过API从C/C++使用valgrind?

我想编写工具,收集有关可执行文件的不同运行时信息,包括堆信息。 Valgrind 是获取此类信息的完美工具。我想获得的关键信息是

回答 1 投票 0

Valgrind:使用<iostream>

采用以下简单程序: #包括 int main() { 返回0; } 如果我使用 valgrind 运行此命令,我会被告知 1 个块中有 72,704 个字节仍然可访问。 T...

回答 3 投票 0

Valgrind 报告与 C++ 应用程序中的 CRYPTO_zalloc 相关的内存泄漏,但没有其他信息

我在arm嵌入式板上创建了一个c ++应用程序。该板使用 armbian linux debian 风格。这个应用程序在 poco NetSSl 库的帮助下在多个地方执行 https 请求。 当我运行 valgr...

回答 1 投票 0

使用 Valgrind 运行单元测试是否太过分了?

就在几天前,我开始研究一个名为 check 的单元测试框架, 我打算在Linux下对c代码进行测试。 现在检查一些精心设计的代码和一些测试代码可以帮助我...

回答 2 投票 0

Valgrind 打印函数中出现奇怪的内存泄漏

这是一个用于管理停车场的 C 脚本,我有这个结构: 类型定义结构{ 字符名称[MAXSIZE]; 整数容量; char car_plates[MAXREGISTRATIONS][PLATE_SIZE]; 字符输入...

回答 1 投票 0

C 程序运行,但 GDB 在 main 之前失败。使用 GSL

我正在编写一个C程序,它将两个表加载为矩阵,以使用开源GSL库执行操作。编译时,程序提示需要的两个文件,并输入infi...

回答 1 投票 0

结构体中二维数组的释放内存

我正在用 C 语言编写一个小游戏,我想用 Valgrind 来测试它。 这是一个小代码示例: #包括 #包括 typedef 结构体游戏 { int** 字段; } 甘...

回答 2 投票 0

内存泄漏 - OpenMP

valgrind 告诉我,我的代码中存在以下问题: 泄漏摘要: ==18114==肯定丢失了:0个块中的0个字节 ==18114==间接丢失:0个块中的0个字节 ==18114==可能...

回答 2 投票 0

为什么基于 Valgrind 的 Helgrind 线程错误检测器的 3.22.0 版本会报告数据争用,而 3.18.1 版本却不会?

1.背景 以下来自 cppreference.com 的 C++ 代码说明了如何将 std::condition_variable 与 std::mutex 结合使用以促进线程间通信。 #包括<

回答 1 投票 0

在 SFML 项目中加载字体时出现 Valgrind 错误

这段代码: // g++ sfml.cpp -o sfml_test -lsfml-graphics -lsfml-window -lsfml-system #包括 #包括 int main() { sf::字体字体; 如果(!字体。

回答 1 投票 0

如何找到导致 valgrind 崩溃的代码行?

我有一个 C++(带有 Qt 6)应用程序,它似乎正常编译运行良好,并且还带有调试信息。但是,当我从 valgrind 运行它时,出现错误: 17:35:07:进程退出并返回值 Process

回答 1 投票 0

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。 他是中本聪..但是这是构建项目的投资组合 不要试图理解这一点..这会让你很快发疯..

回答 2 投票 0

当来自 xmlDoc 的 xmlFreeNode 和 xmlNewChild 时,libxml2 发生内存泄漏

我正在构建一个程序,使用 libxml2 v2.13 在两个 xml 文件之间进行合并验证。 总之,在尝试验证 DOM 之间的一些合并时(使用

回答 1 投票 0

无法检测到内存泄漏

我写了一个程序来搜索几个文本文件中最长的句子: /* lngst_sentence_file_competition.c */ #包括 #包括 枚举常量{ str_len = ...

回答 1 投票 0

Valgrind 和通配符?

根据 valgrind 文档: 位置可以是共享对象、函数或源代码行的名称。它们分别以 obj:、fun: 或 src: 开头。函数、对象和文件名...

回答 1 投票 0

了解自定义抑制的堆栈匹配规则

我在我的一些 C/C++ 进程上应用了 Valgrind,其中包含许多来自我不感兴趣且我想抑制的库的错误。我们称它们为被禁止的图书馆。亲...

回答 1 投票 0

MacBook M1 上的 Valgrind

我需要在我的Mac M1上安装Valgrind来检查C编程语言的内存分配。 如果无法在 Mac M1 上安装 VBox,那么在这种情况下,VBox 是最适合我的解决方案吗?或者我可以...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.