[英]How do I manage memory when using Native Abstractions for Node.js?
我正在使用Node.js的本機抽象(NAN)從node.js程序調用C ++函數。
一個C ++使用新的char []分配一個緩沖區,並將其返回到我的node.js程序。
我的問題是我不知道誰負責釋放此內存。 我在C ++代碼中使用NanReturnValue返回指向緩沖區的指針。 如果我立即刪除[],則node.js代碼只會變得垃圾。 但是,如果我根本不刪除[],似乎可能存在內存泄漏(盡管泄漏的可能性在其他地方)。 該文檔非常稀疏,並且不清楚由誰(無論是JavaScript還是C ++)負責分配此內存。
您需要連接到v8中的GC才能獲得對C ++代碼的回調,從而使您知道沒有JavaScript對象具有對您返回的緩沖區的引用。
在該C ++回調中,您可以delete
ArrayBuffer內存。
我確定您已經看過這些文檔,但請注意Nan :: FreeCallBack()部分: https : //github.com/nodejs/nan/blob/master/doc/buffers.md#api_nan_free_callback
這是一個簡單的示例:
//defined before hand:
static void FreeCallback(char* data, void* message) {
free(message);
}
//some where in a function:
Local<Object> buf_obj = NanNewBufferHandle((char*)zmq_msg_data(message), zmq_msg_size(message), FreeCallback, message);
對於您的緩沖區,可能會有一些差異,但是我希望可以使您對前進的方向有所了解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.