Есть ли предел для встраивания программы v8 для создания v8 :: Context? - PullRequest
0 голосов
/ 07 марта 2020

В режиме выпуска 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 в одно и то же время?

...