Довелось тут в очередной раз потыкать ноду и опять проблемы. Есть сишная либа которая умеет положить данные в память и передать указатель. Дергаю я её из ноды и получаю дикие утечки памяти. Десять раз проглядел все доки по ноде, но так и не понимаю почему течёт. Выделил минимальный сниппет.
var fs = require('fs');
var ref = require('ref');
var ffi = require('ffi');
var intPtr = ref.refType('int');
var ucharPtrPtr = ref.refType('uchar*');
var MyLib = ffi.Library('MyLib.dll', {
    'GetData': ['bool', ['int', 'int', ucharPtrPtr, intPtr]],
    'ReleaseBuffer': ['void', ['void**']]
})
for (i = 1; i < 100; i++) {
    test();
}
function test() {
    var dataPtr = ref.alloc(ucharPtrPtr);
    var lengthPtr = ref.alloc('int');
    var ret = MyLib.GetData(1, 1, dataPtr, lengthPtr);
    var length = lengthPtr.deref();
    var data = ref.reinterpret(ref.deref(dataPtr), length);
    if (ret) {
        var result = data.toString('base64');
        console.log(result);
    }
    MyLib.ReleaseBuffer(dataPtr);
}
Куда смотреть, что делать?














