2014-02-26 72 views
0

我寫的node.js插件和我有實施克隆方法返回的對象的副本的問題。node.js的C++插件:返回新副本

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(); 
} 

回答

0

它已經有一段時間前,當我在節點附加功能。但從那時起this應該工作。您也可以考慮this查看對象封裝的實際操作。

一般來說,我必須承認,我沒有管理類的析構函數被調用。可能是因爲這是一個node/v8相關的問題。

+0

我不知道的時刻。如果我使用創建一個新的運營商,即新的點()的對象,我可以看到,它調用析構函數了,如果我使用p.clone(),它不是免費的。有一個V8標誌表明正在使用外部存儲器,這是因爲我實際上是在GPU上創建內存。 – user3199023

+0

爲什麼不使用Point :: New直接獲取v8對象?無法幫助解決外部存儲器問題:( – bodokaiser

+0

關於您的最後一句話:http://code.google.com/p/v8-juice/wiki/CommentaryOnV8#No_GC_guaranty – JCM