У меня есть некоторые проблемы с освобождением памяти, выделенной VLCs libvlc. (http://www.videolan.org/developers/vlc/doc/doxygen/html/index.html)
#include <stdio.h>
#include <stdlib.h>
#include <vlc/vlc.h>
int main(int argc, char* argv[])
{
libvlc_instance_t * inst;
inst = libvlc_new (0, NULL);
libvlc_release (inst);
return 0;
}
Составлено с: gcc -o tvlc tvlc.c -lvlc
Вальгринд говорит, что еще есть 32 не освобожденных байта. Но я не знаю другого способа освободить память, потребляемую vlc.
Моя вторая проблема с освобождением массива, который я передал в vlc-метод libvlc_media_new_path
,
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <vlc/vlc.h>
int main(int argc, char* argv[])
{
libvlc_instance_t * inst;
libvlc_media_player_t *mp;
libvlc_media_t *m;
char *path = "/home/Musik/test.mp3";
char songpath[ strlen(path) +1 ];
memcpy(songpath, path, strlen(path) +1);
inst = libvlc_new (0, NULL);
m = libvlc_media_new_path (inst, songpath);
mp = libvlc_media_player_new_from_media (m);
libvlc_media_release (m);
libvlc_media_player_release (mp);
libvlc_release (inst);
free(songpath);
return 0;
}
Составлено с: gcc -o ttvlc ttvlc.c -lvlc
Как только я попытаюсь освободить указатель songpath
программа вылетает:
неверный указатель: 0x00007fff4dd76f90
Если я не освобожу память, она не рухнет. Кто-нибудь может подсказать, что не так?
Задача ещё не решена.
Других решений пока нет …