Утечка памяти JNA

Учитывая этот код C++:

void LoadData(char** myVar)
{
    std:: string str("[Really Long String Here]");
    unsigned int size = str.length() + 1;
    *myVar = new char[size];
    strncpy(*myVar, str.c_str(), size);
}

И эту JNA Java:

Pointer myVar = new Memory(Pointer.SIZE);
this.Lib.LoadData(myVar);
this.someVar = myVar.getPointer(0).getString(0);

У меня утечки памяти, насколько я понимаю, getPointer(0) должен создать объект-указатель которая должна быть выпущена в finalize(), но кажется, что это не так.

Я что-то упустил? Кажется, это соответствует спецификации... и я могу запустить функцию выше без каких-либо утечек в C++.

Я вызовите код Java в цикле, чтобы проверить утечку, я пробовал делать паузы и вручную вызывать сборщик мусора, и таким образом он довольно быстро раздуется до гигабайт

. уже несколько дней, и это отстой, чтобы зацикливаться на чем-то столь тривиальном, как попытка освободить память. Насколько я могу судить, я могу только вручную освободить память в Java, если у меня есть адрес, но я не вижу, как я

Редактировать:

Неважно, я даже не думаю, что есть способ сделать это вручную через JNA без расширения...

7
задан StrangeWill 5 March 2012 в 16:21
поделиться