Я пишу интерпретатор 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 Благодарю.
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());
Теперь мне не нужно выделять память, и все собирается мусором.