最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

使用node :: Buffer包装现有内存

IT培训 admin 3浏览 0评论

使用node :: Buffer包装现有内存

使用node.js node :: Buffer包装现有内存的正确方法是什么?我似乎无法使用Buffer调用free_callback。

我知道在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_);
}

任何建议表示赞赏

回答如下:

在V8的GC上调用回调,而不是在C ++中删除缓冲区时。你能构建一个V8的GC清理缓冲区的循环吗?

使用node :: Buffer包装现有内存

使用node.js node :: Buffer包装现有内存的正确方法是什么?我似乎无法使用Buffer调用free_callback。

我知道在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_);
}

任何建议表示赞赏

回答如下:

在V8的GC上调用回调,而不是在C ++中删除缓冲区时。你能构建一个V8的GC清理缓冲区的循环吗?

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论