首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dlsym清理函数插入

使用dlsym清理函数插入
EN

Stack Overflow用户
提问于 2012-03-20 01:27:04
回答 1查看 450关注 0票数 1

作为malloc包装器,我使用以下经典代码片段:

代码语言:javascript
复制
#define _GNU_SOURCE
#include <stdio.h>
#include <stdint.h>
#include <dlfcn.h>

void* malloc(size_t size)
{
    static void* (*real_malloc)(size_t) = NULL;
    if (!real_malloc)
        real_malloc = dlsym(RTLD_NEXT, "malloc");

    void *p = real_malloc(size);
    fprintf(stderr, "malloc(%d) = %p\n", size, p);
    return p;
}

Valgrind感到不安,因为在程序结束时,dlsym仍然分配了缓冲区。

代码语言:javascript
复制
==32691== 32 bytes in 1 blocks are still reachable in loss record 1 of 1
==32691==    at 0x4C279FC: calloc (vg_replace_malloc.c:467)
==32691==    by 0x528559F: _dlerror_run (dlerror.c:142)
==32691==    by 0x5285099: dlsym (dlsym.c:71)
==32691==    by 0x4060BC: malloc (memory.c:222)

我如何释放这些资源?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-26 10:50:47

1数据块仍可访问

这些区块很好。你不用担心他们,他们不是泄密的。这里没什么可看的,继续往前走。

这是你应该关心的“绝对迷失”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9774896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档