Похоже, что разработчики SDL не используют Valgrind, но меня волнуют только те 120 потерянных байтов.
Имея это в виду, я запускал свои программы Hello world через Valgrind, чтобы отловить любые утечки, и хотя я удалил все, кроме самых основных операторов SDL_Init () и SDL_Quit (), Valgrind по-прежнему сообщает о потере 120 байтов и 77k все еще доступны.
Что ж, с Valgrind «все еще достижимая память» часто не является утечкой памяти, особенно в такой простой программе. Могу спокойно поспорить, что в SDL_Quit () практически нет выделения, поэтому «утечки» - это просто структуры, выделенные один раз с помощью SDL_Init ().
Попробуйте добавить полезную работу и посмотрите, увеличатся ли эти суммы; попробуйте сделать цикл полезной работы (например, создание и уничтожение некоторой структуры SDL) и посмотрите, растет ли количество утечек с количеством итераций. В последнем случае следует проверить стековые следы утечек и устранить их.
В противном случае эти 77 КБ утечек считаются «памятью, которая должна быть освобождена в конце программы, но при этом они полагаются на ОС, чтобы освободить ее.
Так что, на самом деле, меня больше беспокоят эти 120 байтов, если они не являются ложными срабатываниями, а их обычно мало. Ложные срабатывания Valgrind чаще всего возникают в тех случаях, когда предполагается использование неинициализированной памяти (например, потому, что это фактически заполнение).
person
Blaisorblade
schedule
12.01.2009