仍然可以通过 put 和 printf 到达

2024-04-02

Valgrind 正在报告 printf 和 put 等函数上仍可到达的“错误”。我真的不知道该怎么办。我需要摆脱它,因为这是一个学校项目,不能有任何错误。我该如何处理这个问题?从报告中我可以看到这些函数使用malloc,但我一直以为他们自己处理内存,对吗? 我使用的是 mac OS X,所以也许这是 valgrind 和操作系统之间的问题?

示例代码:错误出现在使用的任何 put 或 printf 上

void twittear(array_t* array_tweets, hash_t* hash, queue_t* queue_input){

    char* user = queue_see_first(queue_input);
    char key[1] = "@";

    if (!user || user[0] != key[0]) {
        puts("ERROR_WRONG_COMAND");
        return;
    }

    queue_t* queue_keys = queue_create();
    char* text = join_text(queue_input, queue_keys);

    if (!text) {
        puts("ERROR_TWEET_TOO_LONG");
            queue_destroy(queue_keys, NULL);
        return;
    }

    int id = new_tweet(array_tweets, text);
    while (!queue_is_empty(queue_keys))
        hash_tweet(hash, queue_dequeue(queue_keys), id);
    queue_destroy(queue_keys, NULL);
    printf("OK %d\n", id);
}

ERROR:

==1954== 16,384 bytes in 1 blocks are still reachable in loss record 77 of 77
==1954==    at 0x47E1: malloc (vg_replace_malloc.c:300)
==1954==    by 0x183855: __smakebuf (in /usr/lib/system/libsystem_c.dylib)
==1954==    by 0x198217: __swsetup (in /usr/lib/system/libsystem_c.dylib)
==1954==    by 0x1B1158: __v2printf (in /usr/lib/system/libsystem_c.dylib)
==1954==    by 0x1B16AF: __xvprintf (in /usr/lib/system/libsystem_c.dylib)
==1954==    by 0x188B29: vfprintf_l (in /usr/lib/system/libsystem_c.dylib)
==1954==    by 0x18696F: printf (in /usr/lib/system/libsystem_c.dylib)
==1954==    by 0x1000036F3: twittear (main.c:138)
==1954==    by 0x100003C8D: main (main.c:309

Valgrind 在 Mac OS X 上有些问题;它对某些系统库没有完全抑制。 (也就是说,它没有正确忽略一些“预期的”泄漏。)结果通常会包含一些像这样的虚假结果,以及由于函数优化而导致的一些缓冲区溢出,例如memcpy().

我的建议?避免在 Mac OS X 上使用 valgrind,除非您是very熟悉该工具。在 Linux 系统上编译并测试您的应用程序以获得最佳结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仍然可以通过 put 和 printf 到达 的相关文章

随机推荐

  • 进行 Maven 构建时 Jackson 依赖版本被覆盖

    我有一个完美运行的项目 我能够成功构建和部署 昨天 作为开发的一部分 我必须在我的项目中为 Jackson jar 添加以下 Maven 依赖项 然后mvn clean install开始失败
  • 如果我们有 GIL,为什么我们还需要线程锁?

    我相信这是一个愚蠢的问题 但我仍然找不到它 其实最好分成两个问题 1 我是否正确 我们可以有很多线程 但由于 GIL 在某一时刻只有一个线程正在执行 2 如果是这样 为什么我们还需要锁 我们使用锁来避免两个线程尝试读 写某个共享对象的情况
  • Pandas 内部合并/连接返回所有行

    我试图根据两个数据帧中存在的列来合并两个数据帧 仅保留两个数据集的交集 期望的结果是 foo bar foobar x y z x j i x y z j i a 1 2 a 9 0 a 1 2 9 0 b 3 4 b 9 0 b 3 4
  • Android 语音识别服务在 <= Ice Cream Sandwich 上速度慢得多

    我有一个正在实现 RecognitionListener 的服务 如下所示 Android 语音识别作为 Android 4 1 和 4 2 上的服务 https stackoverflow com questions 14940657 a
  • 静音时的 CSCore 环回录音

    我在用着CSCore WasapiLoopbackCapture录制系统声音 但当系统没有声音时 根本不录音 例如 在播放音乐并录制音乐时 输出文件的持续时间小于曲目的持续时间 我希望它即使在系统中没有声音时也能继续录制 但我没有找到任何属
  • DisplayFormat 数据注释不起作用

    我的模型类中有以下数据注释 Required ErrorMessage Required DisplayFormat ApplyFormatInEditMode true DataFormatString 0 MM dd yyyy publ
  • Safari 中的 css 颜色渲染不同

    我正在尝试为我的网络应用程序选择颜色 但意识到与 Firefox 或 Chrome 相比 Safari 呈现样式表的方式存在巨大差异 屏幕截图中的红色应该是 ff3366 但 safari 似乎选择渲染 ff0036 我不知道为什么我找不到
  • 在 Javascript 中处理多个按键事件的最佳方法是什么?

    游戏中按空格键会进行角色射击 出现确认框时按空格键会使该框消失 高分形式按空格键会在输入框中添加一个空格 在此示例中 同一键有多个事件 但一次仅触发一个事件 是否有通用 或特定于Javascript 方法或编程方式将事件添加到某个键 以便它
  • 将包含对象的数组转换为不带 foreach 的关联数组

    我有一个类似的数组 json decode 的结果 array 2 0 gt object stdClass 1 3 key gt string 6 sample startYear gt string 4 2000 endYear gt
  • Highchart 动态创建 - 无法正确渲染

    我正在使用动态函数制作高图绘图 在调用函数后它根本不会渲染 稍后如果我调整窗口大小 它会渲染数据吗 有什么具体原因吗 我的功能 var chart document ready function function randomData le
  • R - ggplot2,几个问题,多个相关图

    我在堆栈上问的第一个问题 我对 R 还很陌生 所以请原谅任何冒犯礼仪的行为 我正在使用 ggplot2 绘制 2 个堆积面积图 数据是来自 Oracle 数据库的等待事件 这是一个性能调整图表 我有几个问题 下面的两个图没有正确排列 很可能
  • 如何为 ggplot2 中具有稳定映射的分类变量分配颜色?

    上个月我一直在加快 R 的学习速度 这是我的问题 在 ggplot2 中为具有稳定映射的分类变量分配颜色的好方法是什么 我需要在具有不同子集和不同数量的 calcategories 变量的一组图表中保持一致的颜色 例如 plot1 lt g
  • C++“声明和初始化”语句是表达式吗?

    语言标准说 注 第 5 条定义了语法 求值顺序和含义 58 表达式是一系列运算符和 指定计算的操作数 一个表达式可以产生一个 值并可能引起副作用 尾注 例如 我有下面的代码 int i 1 A obj 那么 上述两种说法都算 表达 吗 st
  • 在Python中的下划线处分割并存储第一个值

    我有一个像 df 这样的 pandas 数据框 带有列构造名称 construct name aaaa t1 2 cccc t4 10 bbbb g3 3 等等 我想首先拆分下划线处的所有名称 并将第一个元素 aaaa cccc 等 存储为
  • Ajax成功函数未接收数据

    下面是我的网络表单的网络方法 它返回数据列表并且工作正常 WebMethod public static List
  • 与 Assembly Load(byte[] rawAssembly) 相反的操作

    我注意到有一种方法System Reflection Assembly 即Assembly Load byte rawAssembly 我想知道是否有类似的相反操作byte Store Assembly assembly 如果没有 我如何将
  • 用于创建具有合并功能的电子邮件模板的良好库

    我正在寻找一个非常好的库 组件 框架来为我的网络应用程序创建电子邮件模板 我们定期发送一些电子邮件 激活你的帐号 Welcome 感谢您的订单 Etc 我想为我的网络应用程序的非技术管理员提供一种方法 查看当前的电子邮件模板 HTML 所见
  • python字符串'“':字符串内的单双引号

    双引号看起来像这样 如果我把它放在 python 字符串中 我会得到这个 在python中 我可以在字符串中放入两个双引号 这会打印为两个双引号 但是 我不能像以前一样在字符串中放置一个双引号 我在 eclipse 中使用 pydev 执行
  • 根据键名从 HashMap 获取字符串值

    我有一个HashMap有各种键和值 我怎样才能得到一个值 我在地图上有一把钥匙叫my code 它应该包含一个字符串 我怎样才能得到它而不必遍历地图 到目前为止我已经 HashMap newMap new HashMap paramMap
  • 仍然可以通过 put 和 printf 到达

    Valgrind 正在报告 printf 和 put 等函数上仍可到达的 错误 我真的不知道该怎么办 我需要摆脱它 因为这是一个学校项目 不能有任何错误 我该如何处理这个问题 从报告中我可以看到这些函数使用malloc 但我一直以为他们自己