В режиме выпуска MSVC2015 моя программа всегда выполняет sh, когда для l oop работает 680 ~ 685. Ниже приведены мои коды:
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <string.h>
#include "libplatform/libplatform.h"
#include "v8.h"
#include <iostream>
#include <string>
int main(int argc , char* argv[] )
{
v8::V8::InitializeICUDefaultLocation(".");
v8::V8::InitializeExternalStartupData(".");
std::unique_ptr<v8::Platform> platform = v8::platform::NewDefaultPlatform();
v8::V8::InitializePlatform(platform.get());
v8::V8::Initialize();
v8::Isolate::CreateParams create_params;
create_params.array_buffer_allocator =
v8::ArrayBuffer::Allocator::NewDefaultAllocator();
v8::Isolate* isolate = v8::Isolate::New(create_params);
v8::Isolate::Scope isolate_scope(isolate);
v8::HandleScope scope(isolate);
for (int i = 0; i < 1000; ++i) {
printf("loop %d\n", i);
v8::Local<v8::Context> tempContext = v8::Context::New(isolate);//
v8::Context::Scope context_scope(tempContext);
v8::TryCatch try_catch(isolate);
std::string debugScript = "let b=1;";
v8::Local<v8::String> source = v8::String::NewFromUtf8(isolate, debugScript.c_str(),
v8::NewStringType::kNormal).ToLocalChecked();
v8::Local<v8::Script> script = v8::Script::Compile(tempContext, source).ToLocalChecked();
script->Run(tempContext).ToLocalChecked();// crash in loop 680~685
}
return 0;
}
введите описание изображения здесь Почему код всегда создает sh в одно и то же время?