Open terryleetracymc opened 4 years ago
I find memory leak when i use EasyLoader & MonoLoader with standard mode but not AudioLoader
==144387== Memcheck, a memory error detector
==144387== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==144387== Using Valgrind-3.10.0 and LibVEX; rerun with -h for copyright info
==144387== Command: ./c_lib
==144387== Parent PID: 130881
==144387==
==144387==
==144387== HEAP SUMMARY:
==144387== in use at exit: 56,001 bytes in 643 blocks
==144387== total heap usage: 26,345 allocs, 25,702 frees, 49,687,091 bytes allocated
==144387==
==144387== 488 bytes in 1 blocks are definitely lost in loss record 73 of 97
==144387== at 0x4C2BD2C: memalign (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==144387== by 0x4C2BDF1: posix_memalign (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==144387== by 0x81046FC: av_malloc (in /usr/local/lib/libavutil.so.55.34.100)
==144387== by 0x810489D: av_mallocz (in /usr/local/lib/libavutil.so.55.34.100)
==144387== by 0x80FD09A: av_frame_alloc (in /usr/local/lib/libavutil.so.55.34.100)
==144387== by 0x531219F: essentia::streaming::AudioLoader::openAudioFile(std::string const&) (in /usr/local/lib/libessentia.so)
==144387== by 0x5312F85: essentia::streaming::AudioLoader::reset() (in /usr/local/lib/libessentia.so)
==144387== by 0x53114E7: essentia::streaming::AudioLoader::configure() (in /usr/local/lib/libessentia.so)
==144387== by 0x5142260: essentia::streaming::MonoLoader::configure() (in /usr/local/lib/libessentia.so)
==144387== by 0x5290FAC: essentia::streaming::EasyLoader::configure() (in /usr/local/lib/libessentia.so)
==144387== by 0x528FBE7: essentia::standard::EasyLoader::configure() (in /usr/local/lib/libessentia.so)
==144387== by 0x407A53: essentia::EssentiaFactory
the valgrind shows ↑
in the source code: src/essentia/streaming/algorithms/vectoroutput.h
class VectorOutput : public Algorithm { protected: Sink _data;
std::vector* _v;
public: VectorOutput(std::vector* v = 0) : Algorithm(), _v(v) {
setName("VectorOutput");
declareInput(_data, 1, "data", "the input data");
}
~VectorOutput() { // _v not release ? *### if (!_v && _v->size()){ std::vector().swap( _v);
}**
}