2016-09-30 262 views
2

我正在使用v8在C++中編寫Javascript解釋器。 我需要傳遞一個char緩衝區到一個ArrayBuffer中,以便它被垃圾收集。這裏是我的代碼:將數據複製到v8 :: ArrayBuffer

QByteArray data_buffer(file.readAll().data(), file.size()); 

v8::Handle<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(args.GetIsolate(), data_buffer.size()); 
//insert code to copy data from data_buffer to ab 
args.GetReturnValue().Set(ab); 

如果我使用我在其中一個指針傳遞給數據文件的構造,我必須處理與存儲自己,我不希望這樣。

我想避免分配內存,讓v8做它自己的內存管理。 找不到使用Set()或其他函數的方法。

有關如何將數據複製到arraybuffer的任何建議?或者我如何使用2參數構造函數讓v8處理我的數據使用的內存?

此處的文檔:http://bespin.cz/~ondras/html/classv8_1_1ArrayBuffer.html謝謝。

回答

0

找到了一個方法:

memcpy(ab->GetContents().Data(), data_buffer.data(), data_buffer.size()); 

現在我並不需要分配內存,一切都是垃圾收集。