内存泄漏使用NAN将字符串数组从C ++插件传递到Node

时间:2018-07-20 22:15:35

标签: c++ node.js memory-leaks

我编写了一个程序,该程序需要将字符串数组从C ++插件传递到Node.js。一切正常,但是由于它一次可以在一台机器上运行几个月,所以我不会出现内存泄漏。

在我的C ++代码中,我已经使用Visual Studio的CRT内存泄漏功能验证了没有内存泄漏。但是,当我在Node中运行程序时,很明显内存泄漏。

我使用Chrome DevTools在运行压力测试时的不同时间拍摄了快照。快照显示了大量的字符串和数组分配(我的C ++代码传递回了Node)。

这是将我的纯C ++函数包装到JavaScript的相关代码。

NAN_METHOD(NANBindings::GetBufferContents)
{
    queue<string> bufferContents = notifier.getNotificationBufferContent();
    v8::Local<v8::Array> jsArray = Nan::New<v8::Array>(bufferContents.size());
    auto bufferSize = bufferContents.size();
    for(size_t i = 0; i < bufferSize; i++)
    {
        v8::Local<v8::Value> jsString = 
            Nan::New((bufferContents.front()).c_str()).ToLocalChecked();
        bufferContents.pop();
        jsArray->Set(i, jsString);
    }

    info.GetReturnValue().Set(jsArray);

    return;
}

我在做什么错?我该如何告诉Node释放我假设要在此处分配的内存?

如果人们认为有必要,我将乐于提供更多代码。

我将Node版本8.11.3与NAN版本2.10结合使用

0 个答案:

没有答案