首页 文章

Valgrind为同一个应用程序提供不同的内存泄漏

提问于
浏览
1

我有一个项目使用我用cmake和Makefile编译 . 两个构建系统都创建相同的可执当我在它们两个上运行valgrind时,我得到了不同的确定丢失的字节值 .

main.cc

#include <GameWindow.h>
#include <Video.h>
#include <iostream>
#include <GL/gl.h>
using namespace ugen;

char read()
{
    std::cin.ignore(std::cin.rdbuf()->in_avail());
    return std::cin.get();
}

int main()
{
    Video video;
    GameWindow win("Window", 0, 0, 640, 480, SDL_WINDOW_SHOWN|SDL_WINDOW_OPENGL);
    std::cin.sync_with_stdio(false);

    glClearColor(0.0f, 0.0f, 0.4f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);
    win.updateDraw();
    read();

    glClearColor(0.0f, 0.5f, 0.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);
    win.updateDraw();
    read();
    return 0;
}

视频类启动SDL2 . GameWindow类创建SDL_Window上下文 . Makefile版本从SDL_TLS泄漏20个字节 . CMake版本泄漏了80个字节,即使它来自相同的代码并且是Makefile二进制文件的精确副本 . 我用valgrind来查找内存泄漏 .

1 回答

  • 1

    valgrind给出的不同值与文件名相关联,我怀疑X11有内存泄漏 . 这解释了为什么两个可执行文件有不同的内存泄漏值,它们有不同的名称 . 回答

相关问题