使用v8引擎创建数组时遇到问题。 这是我到目前为止所得到的:
void function(Isolate* isolate) {
EscapableHandleScope scope(isolate);
Local<Array> array = Array::New(isolate, n);
...
}
但是我的程序每次到达第二行时都会崩溃。 这是我收到的输出:
==== C stack trace ===============================
v8::internal::Scope::set_start_position [0x000002A7A393E69E+10258841]
v8::internal::Scope::set_start_position [0x000002A7A37A1C63+8568670]
v8::internal::Scope::set_start_position [0x000002A7A37A1E02+8569085]
v8::internal::Scope::set_start_position [0x000002A7A3004CBC+585655]
我已经尝试在此函数中创建一个整数或另一个对象。在那里工作得很完美。 知道这里出了什么问题吗?
我发现出了什么问题。但我不是百分百肯定为什么。我放了之后 在Context_Scope中的Array初始化,它工作。但为什么呢 是否为Integer初始化(没有上下文范围)?
答案 0 :(得分:1)
这里没有足够的信息来说明发生的事情。根据您粘贴的代码段,我只能说n
没有定义,所以它甚至不应该编译,但显然这不是您正在讨论的问题。
请在调试模式下编译代码,然后在调试器中运行它,以便获得正确的堆栈跟踪。也许它不仅仅是崩溃,而是会遇到一个断言(“DCHECK”),它可能会揭示错误。 (一般来说,学习如何使用调试器几乎是使用C ++的必要条件。)
将您所拥有的内容与官方示例代码进行比较可能也会有所帮助,例如: https://chromium.googlesource.com/v8/v8/+/master/samples/hello-world.cc
如果您仍然需要帮助:请发布您的整个代码,包括您的构建方式以及您正在使用的V8版本。
编辑问题后进行编辑:
像缺少的ContextScope这样的东西就是我要求查看整个代码的原因; - )
小整数与上下文无关。 (这是一个你通常不关心的实现细节,因为对于所有有趣的事情你都需要一个上下文。)