Означает ли элемент gstreamer с увеличивающимся индексом суффикса возможную утечку памяти?
Я написал простой код, основанный на gstreamer-1.0, для декодирования определенного файла для цикла с использованием playbin, и каждый раз, когда playbin создавал элемент element mpeg2dec, элемент получил новое имя. В первый раз имя может быть "mepg2dec0", а затем оно увеличит индекс суффикса до "mpeg2dec1", "mpeg2dec2" и т. Д. При повторном воспроизведении файла.
Вот некоторые цитаты из кода:
do {
playbin=gst_element_factory_make("playbin", "play");
g_object_set(G_OBJECT(playbin), "uri", "file:///home/gst/Videos/1.ts", NULL);
/* add message receivers ... */
gst_element_set_state(GST_ELEMENT(playbin), GST_STATE_PAUSED);
gst_element_set_state(GST_ELEMENT(playbin), GST_STATE_PLAY);
/* wait until got EOS */
gst_element_set_state(GST_ELEMENT(playbin), GST_STATE_PAUSED);
gst_element_set_state(GST_ELEMENT(playbin), GST_STATE_NULL);
gst_object_unref(GST_ELEMENT(playbin));
} while(1);
Означает ли это увеличение индекса суффикса возможную утечку памяти элементов, которые не были освобождены?
1 ответ
Увеличение суффикса в основном означает, что что- то отслеживает текущий суффикс.
это может быть то, что gstreamer выделяет все элементы и поддерживает их список. когда добавляется новый элемент, gstreamer может проверить выделенные в данный момент имена элементов и сгенерировать новое на основе этого знания (например, сначала попытаться использовать имя "mepg2dec0", а если оно уже занято, попробовать "mepg2dec1" и т. д.). до тех пор, пока не найдет свободное имя).
однако, это что-то может также быть единственным целым числом (для каждого типа элемента), которое монотонно увеличивается (без повторного использования индекса) всякий раз, когда создается новый элемент (и полностью игнорирует, уничтожены ли и какие элементы).
Итак, чтобы ответить на ваш вопрос:
Нет, наличие нового имени для каждого элемента не указывает на то, есть ли утечка памяти или нет.