c++ - v8 嵌入程序创建 v8::Context 是否有限制?
问题描述
在 MSVC2015 发布模式下,我的程序在 for 循环运行在 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;
}
在此处输入图片描述 为什么代码总是同时崩溃?
解决方案
推荐阅读
- java - Buggy Jar 的类加载问题
- javascript - 我有多个图像路径的数组,我想使用循环打印图像
- excel - 您可以使用 XLOOKUP 返回像 VLOOKUP 这样的相对列引用吗?
- python-3.x - 运行“$ python CommonModules/manage.py collectstatic --noinput”时出错
- amazon-web-services - DynamoDB 全局表备份和恢复
- python - ValueError:数据基数不明确。请提供具有相同第一维的数据
- microservices - API 和后台工作人员的微服务命名约定 (MessageBus/ScheduledTasks)
- react-native - 如何在 React Native Router Flux 的标签栏上添加一个虚拟图标?
- javascript - 如何防止来自浏览器控制台的 cookie 访问?
- python - 使用 XlsxWriter 和 Python Excel 进行循环