С Новым годом! Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
1

Утечка памяти при использовании GLFW

30.05.2014, 17:47. Показов 1246. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Заинтересовался технологией GLFW.

Скомпилировал библиотеки, взял код из их примера, скопировал и вставил в файл m.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <GLFW/glfw3.h>
 
int main(void)
{
    GLFWwindow* window;
 
    /* Initialize the library */
    if (!glfwInit())
        return -1;
 
    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        return -1;
    }
 
    /* Make the window's context current */
    glfwMakeContextCurrent(window);
 
    /* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
        /* Render here */
 
        /* Swap front and back buffers */
        glfwSwapBuffers(window);
 
        /* Poll for and process events */
        glfwPollEvents();
    }
 
    glfwTerminate();
    return 0;
}
Скомпилировал:
Bash
1
g++ -o m m.cpp -std=c++11 -lglfw -lGLU -lGL
Запустил - работает!

Потом, используя любимый valgrind, запустил тест:
Bash
1
valgrind --tool=memcheck ./m
На что получил:

==5891== Memcheck, a memory error detector
==5891== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==5891== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info
==5891== Command: ./m
==5891==
==5891== Conditional jump or move depends on uninitialised value(s)
==5891== at 0x64E9275: ??? (in /usr/lib/nvidia-331/libGL.so.331.38)
==5891== by 0xA5EAF07: ???
==5891== by 0xA5EAF07: ???
==5891==
==5891==
==5891== HEAP SUMMARY:
==5891== in use at exit: 42,295 bytes in 400 blocks
==5891== total heap usage: 4,093 allocs, 3,693 frees, 64,314,039 bytes allocated
==5891==
==5891== LEAK SUMMARY:
==5891== definitely lost: 12,048 bytes in 2 blocks
==5891== indirectly lost: 0 bytes in 0 blocks
==5891== possibly lost: 0 bytes in 0 blocks
==5891== still reachable: 30,247 bytes in 398 blocks
==5891== suppressed: 0 bytes in 0 blocks
==5891== Rerun with --leak-check=full to see details of leaked memory
==5891==
==5891== For counts of detected and suppressed errors, rerun with: -v
==5891== Use --track-origins=yes to see where uninitialised values come from
==5891== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 1 from 1)
Утечка - 12,048 байтов.

Что я делаю не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2014, 17:47
Ответы с готовыми решениями:

GLFW + Npp -> NppExec. Не могу Слинковать GLFW
Здравствуйте! У меня не получается слинковать GLFW. Оно вроде как компилируется, так как ошибки...

Утечка памяти при декодировании видео
Доброго времени суток! Пишу плеер видео, на этапе декодирования кадров и их вывода столкнулся с...

Утечка памяти при использовании хука
Добрый вечер. Есть Directx hook для x86 под DX9 на C++ . После инжекта в запускается поток с 2-мя...

Утечка памяти при использовании Handler
Добрый день, многоуважаемые форумчане :). Прошу помощи в решении проблемы. Приведу несложный...

3
шКодер самоучка
2282 / 1958 / 945
Регистрация: 09.10.2013
Сообщений: 4,369
Записей в блоге: 10
30.05.2014, 18:40 2
Наверно не вызываете glfwDestroyWindow(window);
Ведь обычно после создания указателя и использования его нужно утилизировать..
0
33 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 118
30.05.2014, 19:21  [ТС] 3
Да, в примере этого нет, но проблемы это не решает.

Добавлено через 13 минут
Использую Ubuntu.

Сменил драйвера от Nvidia с 331 на 304, получил:
==3191== LEAK SUMMARY:
==3191== definitely lost: 0 bytes in 0 blocks
==3191== indirectly lost: 0 bytes in 0 blocks
==3191== possibly lost: 0 bytes in 0 blocks
==3191== still reachable: 30,249 bytes in 398 blocks
==3191== suppressed: 0 bytes in 0 blocks
Я так понимаю, проблема в них?

Добавлено через 24 секунды
Использую Ubuntu.

Сменил драйвера от Nvidia с 331 на 304, получил:
==3191== LEAK SUMMARY:
==3191== definitely lost: 0 bytes in 0 blocks
==3191== indirectly lost: 0 bytes in 0 blocks
==3191== possibly lost: 0 bytes in 0 blocks
==3191== still reachable: 30,249 bytes in 398 blocks
==3191== suppressed: 0 bytes in 0 blocks
Я так понимаю, проблема в них?
0
шКодер самоучка
2282 / 1958 / 945
Регистрация: 09.10.2013
Сообщений: 4,369
Записей в блоге: 10
30.05.2014, 19:34 4
Да, похоже...
в первом сообщении было про неинициализированную переменную
Цитата Сообщение от relationer Посмотреть сообщение
==5891== Conditional jump or move depends on uninitialised value(s)
==5891== at 0x64E9275: ??? (in /usr/lib/nvidia-331/libGL.so.331.38)
==5891== by 0xA5EAF07: ???
==5891== by 0xA5EAF07: ???
0
30.05.2014, 19:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2014, 19:34
Помогаю со студенческими работами здесь

Утечка памяти при использовании анимации
Приветствую. Проблема такова: использую анимацию на JQuery, и RAM в Firefox растет каждую секунду...

Утечка памяти при использовании хандлера
new Handler().postDelayed(new Runnable() { @Override public void run() { ...

Утечка памяти при использовании setInterval()
Доброго времени суток! есть php файл view.php, в котором выводятся в таблицу и оборачиваются в...

Утечка памяти при использовании системного счетчика
Есть некий класс с событием upTimeUpdated (подписчикам отдается время работы ОС) public class...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru