Коррупция стекает вокруг ручногоскопа в V8C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Коррупция стекает вокруг ручногоскопа в V8

Сообщение Anonymous »

Я получаю A: Отказ от времени выполнения #2 - стек вокруг переменной 'harder_scope' был поврежден. < /p>
Когда я запускаю этот код: < /p>
#include

#define V8_COMPRESS_POINTERS 1

#include
#include

namespace consoleUtils {
static void log(const v8::FunctionCallbackInfo& args) {
v8::Isolate* isolate = args.GetIsolate();
if (args.Length() > 0) {
v8::String::Utf8Value utf8(isolate, args[0]);
std::cout Set(context, v8::String::NewFromUtf8(isolate, "log").ToLocalChecked(), logFuncTemplate->GetFunction(context).ToLocalChecked()).Check();
}

~Console() {
logTemplate.Reset();
}
};

class Engine {
private:
v8::Isolate::CreateParams create_params;
v8::Persistent context;
std::unique_ptr platform;

public:
v8::Isolate* isolate = nullptr;
Console* console = nullptr;

Engine() {
// Initialize V8.
v8::V8::InitializeICUDefaultLocation("./v8-data");
v8::V8::InitializeExternalStartupData("./v8-data");
platform = v8::platform::NewDefaultPlatform();
v8::V8::InitializePlatform(platform.get());
v8::V8::Initialize();

// Create a new Isolate and make it the current one.
create_params.array_buffer_allocator = v8::ArrayBuffer::Allocator::NewDefaultAllocator();
isolate = v8::Isolate::New(create_params);

// Create a new context.
v8::Isolate::Scope isolate_scope(isolate);
v8::HandleScope handle_scope(isolate);
v8::Local local_context = v8::Context::New(isolate);
context.Reset(isolate, local_context);

// Initialize console with the current context.
console = new Console(isolate, local_context);
}

~Engine() {
delete console;
context.Reset();
isolate->Dispose();
v8::V8::Dispose();
delete create_params.array_buffer_allocator;
}

void runExample() {
v8::Isolate::Scope isolate_scope(isolate);
v8::HandleScope handle_scope(isolate);
v8::Local local_context = context.Get(isolate);
v8::Context::Scope context_scope(local_context);

v8::Local source = v8::String::NewFromUtf8Literal(isolate, "log('Hello, World!')");
v8::Local script = v8::Script::Compile(local_context, source).ToLocalChecked();
v8::Local result = script->Run(local_context).ToLocalChecked();

v8::String::Utf8Value utf8(isolate, result);
std::cout
my v8 -настройки сборки (args.gn): < /p>

is_debug = true
target_cpu = "x64"
v8_enable_backtrace = true
v8_enable_slow_dchecks = true
v8_optimized_debug = false
is_component_build = false
v8_static_library = true
v8_monolithic = true
v8_use_external_startup_data = false
use_custom_libcxx = false
is_clang = false

# Disable WebAssembly
v8_enable_webassembly = false
v8_enable_wasm_simd256 = false

v8_enable_pointer_compression = true

v8_enable_sandbox = false

enable_iterator_debugging = true

< /code>
IDE, который я использую, - это Microsoft Visual Studio, я составляю код с помощью MSVC. Стандарт C ++ 20. < /p>
Я пытался отладить себя, но, к сожалению, мне не хватает опыта для этого. Излишне говорить, что это не привело к большому количеству, кроме моего собственного разочарования.>

Подробнее здесь: https://stackoverflow.com/questions/789 ... cope-in-v8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»