gpt4 book ai didi

c++ - 用 node::Buffer 包装现有内存

转载 作者:太空宇宙 更新时间:2023-11-04 13:41:25 25 4
gpt4 key购买 nike

用 node.js node::Buffer 包装现有内存的正确方法是什么?我似乎无法让 free_callback 调用 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_);
}

感谢任何建议。

最佳答案

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

关于c++ - 用 node::Buffer 包装现有内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27577363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com