2014-12-20 46 views
1

用node.js node :: Buffer包裝現有內存的正確方法是什麼?我似乎無法獲得free_callback與緩衝區調用。使用node :: Buffer包裝現有內存

我知道在一段時間內IRC上有一些喋喋不休的問題。我們在0.10.x系列,但是如果有必要...移動

void free_test_cb(char *m,void *hint) { 
    DBG_OUT("FREEING MEMORY."); 
    free(m); 
} 

Handle<Value> WrapMemBufferTest(const Arguments& args) { 
    HandleScope scope; 
    char *mem = (char *) ::malloc(100); 
    memset(mem,'A',100); 
    node::Buffer *buf = node::Buffer::New(mem,100,free_test_cb,0); 
    return scope.Close(buf->handle_); 
} 

free_test_cb()只是沒有得到所謂的在一個簡單的測試程序。 ...然後我甚至嘗試把它們扔在那裏:

void weak_cb(Persistent<Value> object, void* parameter) { 
    object.Dispose(); 
} 

Handle<Value> WrapMemBufferTest(const Arguments& args) { 
    HandleScope scope; 
    char *mem = (char *) ::malloc(100); 
    memset(mem,'A',100); 
    node::Buffer *buf = node::Buffer::New(mem,100,free_test_cb,0); 
    buf->handle_.MakeWeak(NULL, weak_cb); // new 
    return scope.Close(buf->handle_); 
} 

任何意見讚賞。

+0

爲什麼在C++中使用'malloc'和'free'? –

回答

0

回調在V8的GC上調用,而不是在C++中刪除緩衝區時調用。你可以構建一個循環的緩衝區將由V8的GC清理?

+0

您是否想要重新解釋這個問題,以減少這是一個要求澄清的評論,而不是真正的答案? – Yunnosch