【发布时间】:2019-01-19 05:17:03
【问题描述】:
您好,当我在 argv[1] 上执行检查时,下面的代码会崩溃。请帮助 修复它,在将值分配给 argv[1] 时,我需要检查 bool 变量 checktrue 是否为 true 分配字符串值,否则按以下代码分配 int 值。
void DispatchEventWorker::HandleOKCallback() {
v8::Local<v8::Value> argv[2];
argv[0]= Nan::New<v8::String>(structdata.value1).ToLocalChecked();
if(checktrue)
{
argv[1] = Nan::New<v8::Number>(structdata.value2).ToLocalChecked();
}
else
{
argv[1] = Nan::New<v8::String>(structdata.value3);
}
callback->Call(2, argv);
}
注意输出:进程 123432098(节点)终止 SIGSEGV 代码=1 fltno=11 ip=0000000001076a08(/usr/lib/ldqnx-64.so.2@memcpy+0x0000000000000048) mapaddr=0000000000076a08 .参考=2073696874206f74
【问题讨论】:
-
嗨,欢迎来到 StackOverflow。我们很乐意为您提供帮助,但首先您需要付出一些努力。尝试先自己解决此问题,然后编辑此帖子以增加您的努力。如果您设法自己解决此问题,请不要忘记发布解决方案的答案,以使我们其他人受益。
-
出现了一些拼写错误。今天是我在 node js 的第一天
-
(1) 格式化代码以提高可读性会很好。 (2)代码与你的描述不符(关于在什么情况下返回什么),哪一个是对的? (3) 你有两个分配给
argv[1],哪个是崩溃的? (4) 要使用 C++,您应该熟悉调试器。这不会是您遇到的最后一个 SIGSEGV ;-)
标签: c++ v8 node.js-nan