【问题标题】:node.js c++ addon: return new copynode.js c++ 插件:返回新副本
【发布时间】:2017-09-11 06:22:40
【问题描述】:

我正在编写一个 node.js 插件,但在实现返回对象副本的 clone 方法时遇到问题。

var p = new Point(1, -2);
var copyOfP = p.clone();

这是我的实现,这是不正确的,因为它在没有句柄时不调用析构函数:

static v8::Handle<v8::Value> Clone(const v8::Arguments& args)
{
    HandleScope scope;

    Point* in = ObjectWrap::Unwrap<Point>(args.This());
    Point* out = new Point(in->x_, in->y_); 

    out->Wrap(args.Holder());
    return args.Holder();
}

【问题讨论】:

    标签: c++ node.js v8 node.js-addon embedded-v8


    【解决方案1】:

    我在节点插件上已经有一段时间了。但是从那时起this 应该可以工作。您也可以考虑使用this 来查看对象包装的实际效果。

    通常我必须承认我没有管理要调用的类的析构函数。可能这是与 node/v8 相关的问题。

    【讨论】:

    • 我现在不确定。如果我使用 new 运算符创建对象,即 new Point(),我可以看到如果我使用 p.clone(),它会调用析构函数,它不会释放。有一个 V8 标志表明一个正在使用外部内存,这是因为我实际上是在 GPU 上创建内存。
    • 为什么不用Point::New直接获取v8对象呢?无法解决外部内存问题:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2012-06-25
    • 2011-12-30
    • 2011-01-21
    • 2017-04-07
    相关资源
    最近更新 更多