私はこのコードを持っています:
v8::Handle<v8::Value> StartMethod(const v8::Arguments &args) {
v8::HandleScope scope; // node_isolate
int length = args.Length();
std::vector<std::unique_ptr<char[]>> argv;
for(int i=0;i<length;++i) {
if(args[i]->IsString()) {
v8::String::Utf8Value str(args[i]);
const int strLen = ToCStringLen(str);
if(strLen) {
std::unique_ptr<char []> data(new char[strLen+1]);
strcpy_s(data.get(), strLen+1, ToCString(str));
argv.push_back(std::move(data));
}
}
}
return scope.Close(v8::Int32::New(MainMethod(argv.size(), &(argv[0]._Myptr))));
}
私は使用std::move
しており、正常に動作しています。std::move を使用しないと、assignment
関数が使用できないためにコンパイラ エラーが発生します。
しかし、ベクトルがその場所を変更したときに、内部のサイズ変更やオブジェクトの移動が原因である可能性がある場合、何も悪いことが起こらないことを保証しますか?