Я программист PHP, изучающий C ++, когда я создаю VST-хост. Возможно, я откусила больше, чем могла жевать, но я делаю некоторые успехи (я думаю)!
Я использую Steinberg VST SDK и библиотеку JUCE в Visual Studio 2010. Я столкнулся с ошибкой утечки объекта, и я не совсем понимаю решения, которые я нашел, когда искал ошибку, которую я получено.
Вот ошибка на вкладке Вывод. Моя программа выплевывает JUCE Ошибка оценки:
*** Leaked objects detected: 44 instance(s) of class MidiEventHolder
score.exe has triggered a breakpoint
Я перешел к этому сообщению в файле juce_amalgamated.h:
~LeakCounter()
{
if (numObjects.value > 0)
{
DBG ("*** Leaked objects detected: " << numObjects.value << " instance(s) of class " << getLeakedObjectClassName());
/** If you hit this, then you've leaked one or more objects of the type specified by
the 'OwnerClass' template parameter - the name should have been printed by the line above.
If you're leaking, it's probably because you're using old-fashioned, non-RAII techniques for
your object management. Tut, tut. Always, always use ScopedPointers, OwnedArrays,
ReferenceCountedObjects, etc, and avoid the 'delete' operator at all costs!
*/
jassertfalse;
}
}
Вот бит, который я кодирую, к которому, как мне кажется, относится ошибка:
const wchar_t* midiPath = L"C:\\creative\\midi\\m1.mid";
File* fileHard;
FileInputStream* fileInputStream;
fileHard = new File (T("C:\\creative\\midi\\m1.mid"));
fileInputStream = fileHard->createInputStream();
MidiFile * midFile;
midFile = new MidiFile();
midFile->readFrom(*fileInputStream);
midFile->getNumTracks();
midFile->getTrack(0);
Может быть, я подхожу к этому синтаксису больше как к PHP? Я не совсем понял, что такое методы RAII.
Будем благодарны за любые советы, которые помогут мне в правильном направлении.