2016-09-30 3 views
2

Ich schreibe einen Javascript Interpreter in C++ mit v8. Ich muss einen Char-Puffer in einen ArrayBuffer übergeben, so dass es Müll gesammelt wird. Hier ist mein Code:Kopiere Daten in 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); 

Wenn ich den Konstruktor aus der Dokumentation verwenden, in dem ich einen Zeiger auf die Daten übergeben, werde ich mit dem Speicher selbst beschäftigen und ich will das nicht.

Ich möchte vermeiden, Speicher zuzuweisen und v8 seine eigene Speicherverwaltung zu lassen. Mit Set() oder einer anderen Funktion konnte kein Weg gefunden werden.

Haben Sie Vorschläge zum Kopieren von Daten in den Array-Puffer? Oder wie kann ich den 2-Parameter-Konstruktor verwenden, um v8 mit dem von meinen Daten verwendeten Speicher umgehen zu lassen?

Dokumentation hier: http://bespin.cz/~ondras/html/classv8_1_1ArrayBuffer.html Danke.

Antwort

0

einen Weg gefunden:

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

Jetzt brauche ich nicht Gedächtnis und alles zuzuteilen Müll gesammelt.

Verwandte Themen