2016-09-30 12 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()または他の関数を使用してウェイを見つけることができませんでした。

データをアレイバッファにコピーする方法についてのご意見はありますか?または、2つのパラメータのコンストラクタを使用して、データが使用するメモリをv8で処理できるようにするにはどうすればよいですか?

ドキュメンテーション:http://bespin.cz/~ondras/html/classv8_1_1ArrayBuffer.htmlありがとう。

答えて

0

0

http://v8.paulfryzel.com/docs/master/classv8_1_1_array_buffer.html#a28e84424cddbe397f3ee3d920189bc04

Local<ArrayBuffer> v8::ArrayBuffer::New ( Isolate * isolate, size_t  byte_length) 

新しいArrayBufferを作成します。割り当て| byte_length |バイト。割り当て済みのメモリは、作成されたArrayBufferによって所有され、オブジェクトが外部化されていない限り、ガベージコレクションされるときに割り当て解除されます( )。

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

今、私はメモリを割り当てる必要はありませんし、すべてがごみ収集されます方法を見つけた

関連する問題