Это просто означает, что он наследует непосредственно из класса Object. Здесь больше о наследовании в Java.
Даже для базовой программы OpenGL "hello world" без полной SDL, Valgrind выдает подобные предупреждения глубоко внутри библиотек OpenGL. Это странно, но я предположил
и не потеряла много сна из-за этого.
Это нормально для графической библиотеки API (OpenGL, Вулкан, и т.д.) и API работы с окнами (X11, SDL, и т.д.). Этот наилучший вариант состоит в том, чтобы использовать valgrind файлы подавления для игнорирования этих ошибок.
Вот то, как сделать это с Linux, SDL & OpenGL:
Скажем, программу, которую Вы отлаживаете, называют, 'prog.out' (не забудьте заменять prog.out подлинным именем Вашей программы),
можно экспортировать информацию о подавлении как это:
valgrind --leak-check=full --show-reachable=yes --show-leak-kinds=all --error-limit=no --gen-suppressions=all --log-file=supdata.log ./prog.out
можно теперь извлечь информацию о подавлении из 'supdata.log' с помощью сценария или вручную. Можно использовать подстановочные знаки ('* ', '... ') для создания подавлений более универсальными (таким образом, не имеющий необходимость обновить файл подавления каждый раз, когда Вы обновляете свой код).
После этого, каждый раз, когда Вы отлаживаете свою программу, Вы включали бы файл подавления с этого времени. Например, я сделал файл подавления ниже 'linux_sdl_gl.sup'. Это работает хорошо на меня при разработке использующий SDL и OpenGL на Linux. Это игнорирует весь OpenGL, SDL и X11, созданный по ошибкам так, чтобы я мог легко найти ошибки, которые я создаю. Не стесняйтесь использовать его в своей разработке.
, Когда я отлаживаю свой код, я использую следующий вызов для valgrind. Это позволяет мне находить любые новые системные ошибки, которые, возможно, пропустил мой файл подавления.
valgrind --gen-suppressions=all --suppressions=./linux_sdl_gl.sup --leak-check=full --show-leak-kinds=all ./prog.out
файл: linux_sdl_gl.sup
# Copyright (c) <'2019'> <'Alrick Grandison'>
# This software is provided 'as-is', without any express or implied
# warranty. In no event will the authors be held liable for any damages
# arising from the use of this software.
# Permission is granted to anyone to use this software for any purpose,
# including commercial applications, and to alter it and redistribute it
# freely, subject to the following restrictions:
# 1. The origin of this software must not be misrepresented; you must not
# claim that you wrote the original software. If you use this software
# in a product, an acknowledgment in the product documentation would be
# appreciated but is not required.
# 2. Altered source versions must be plainly marked as such, and must not be
# misrepresented as being the original software.
# 3. This notice may not be removed or altered from any source distribution.
{
opengl_memcpy_addr8
Memcheck:Addr8
fun:memcpy@GLIBC*
obj:/usr/lib/x86_64-linux-gnu/dri/*_dri.so
...
}
{
opengl_memcpy_addr1
Memcheck:Addr1
fun:memcpy@GLIBC*
obj:/usr/lib/x86_64-linux-gnu/dri/*_dri.so
...
}
{
opengl_memset_addr8
Memcheck:Addr8
fun:memset
obj:/usr/lib/x86_64-linux-gnu/dri/*_dri.so
...
}
{
sdl_leak_reachable
Memcheck:Leak
match-leak-kinds: reachable
...
fun:SDL_Init_REAL
...
}
{
x11_leak_reachable
Memcheck:Leak
match-leak-kinds: reachable
...
obj:/usr/lib/x86_64-linux-gnu/libX11.so.*
...
}
{
sdl_leak_indirect
Memcheck:Leak
match-leak-kinds: indirect
...
fun:SDL_Init_REAL
...
}
{
sdl_leak_definite
Memcheck:Leak
match-leak-kinds: definite
...
fun:SDL_Init_REAL
...
}
# OpenGL Calls DL under the Hood - Taken straight out of Valgrind --gen-suppressions
# Could overlap with non-graphics DL api calls
# But, If you are not using DL directly, then don't worry about this
{
dl_leak_reachable
Memcheck:Leak
match-leak-kinds: reachable
...
fun:dlopen@@GLIBC*
...
}
# Same as above but more generic
# Could overlap with non-graphics DL api calls
# But, If you are not using DL directly, then don't worry about this
{
dl_leak_reachable
Memcheck:Leak
match-leak-kinds: reachable
...
fun:_dl_*
...
}
{
x11_leak_indirect
Memcheck:Leak
match-leak-kinds: indirect
...
obj:/usr/lib/x86_64-linux-gnu/libX11.so.*
...
}
{
x11_leak_definite
Memcheck:Leak
match-leak-kinds: definite
...
obj:/usr/lib/x86_64-linux-gnu/libX11.so.*
...
}
{
x11_leak_possible
Memcheck:Leak
match-leak-kinds: possible
...
obj:/usr/lib/x86_64-linux-gnu/libX11.so.*
...
}
{
opengl_leak_reachable
Memcheck:Leak
match-leak-kinds: reachable
...
obj:/usr/lib/x86_64-linux-gnu/libGLX.so.*
...
}
github: valgrind код подавления
Одиночки практически всегда являются "утечкой" со стандартными реализациями. Обычно это нормально, так как обычно не хочется разгружать консоль для таких вещей, как печать
.