JavaScript — скопировать данные в v8 :: ArrayBuffer

Я пишу интерпретатор Javascript в C ++, используя 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 Благодарю.

2

Решение

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 и будет освобождена
когда это мусор, если объект не является внешним.

0

Другие решения

Нашел способ:

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

Теперь мне не нужно выделять память, и все собирается мусором.

0

По вопросам рекламы [email protected]