当我使用V8库中的GetInternalField()时出现分段错误

问题描述 投票:0回答:1

我使用v8库的较新版本。当我从this page(process.cc)运行演示时,

我的程序在UnwrapMap函数中调用GetInternalField时崩溃。有没有人遇到类似的问题,或者他们知道如何解决?这里的例子:

map<string, string>* JsHttpRequestProcessor::UnwrapMap(Local<Object> obj) {
  Local<External> field = Local<External>::Cast(obj->GetInternalField(0)); // here segmentation fault
  void* ptr = field->Value();
  return static_cast<map<string, string>*>(ptr);
}

编辑:

我解决了我的问题。我必须插入宏V8_COMPRESS_POINTERS =1。谢谢

c++ v8
1个回答
0
投票

提供的示例在这里工作正常;您是否以任何方式对其进行了修改?您的运行情况如何?

仅当您知道obj->GetInternalField(0)是具有内部字段的对象时,才可以调用obj。您可以使用obj->InternalFieldCount()进行检查。如果您(嵌入者)为对象提供了任何内部字段,则这些对象只有内部字段。如果尝试将常规JavaScript对象转换为C ++映射,则必须遍历其属性,而不是其内部字段。

© www.soinside.com 2019 - 2024. All rights reserved.