![c – * v8 :: String :: Utf8Value(args [0] – > ToString())不返回node.js的字符串addon参数,第1张 c – * v8 :: String :: Utf8Value(args [0] – > ToString())不返回node.js的字符串addon参数,第1张](/aiimages/c+%E2%80%93+%2A+v8+%3A%3A+String+%3A%3A+Utf8Value%28args+%5B0%5D+%E2%80%93+%26amp%3Bgt%3B+ToString%28%29%29%E4%B8%8D%E8%BF%94%E5%9B%9Enode.js%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2addon%E5%8F%82%E6%95%B0.png)
有谁知道为什么?
我的node.Js插件看起来像这样:
#define BUILDING_NODE_EXTENSION#include <node.h>#define MAX_OUTPUT_BUF 80extern "C" char *do_sqlsig(char *in);using namespace v8;Handle<Value> sqlsig(const Arguments& args) { HandleScope scope; char *c_arg,*ret; if (args.Length() < 1) { ThrowException(Exception::TypeError(String::New("Wrong number of arguments"))); return scope.Close(Undefined()); } c_arg = *v8::String::Utf8Value(args[0]->ToString()); ret = c_arg; //do_sqlsig(c_arg); return scope.Close(String::New(ret));}voID Init(Handle<Object> exports) { exports->Set(String::NewSymbol("sqlsig"),FunctionTemplate::New(sqlsig)->GetFunction());}NODE_MODulE(sqlsig,Init) 正如您所看到的,我正在为C函数do_sqlsig编写一个包装器.我非常了解C并且对C知之甚少
解决方法 指针从* v8 :: String :: Utf8Value(args [0] – > ToString())返回的字符串;是在该行的末尾销毁点(当Utf8Value被销毁时).您在一行中创建并销毁Utf8Value对象.取消引用悬空指针时,它是未定义的行为,以及为什么在不同版本上看到不同的结果.将其分解为两行,只要您的Utf8Value对象在范围内,该字符串就会有效.
v8::String::Utf8Value str(args[0]->ToString());c_arg = *str;总结
以上是内存溢出为你收集整理的c – * v8 :: String :: Utf8Value(args [0] – > ToString())不返回node.js的字符串addon参数全部内容,希望文章能够帮你解决c – * v8 :: String :: Utf8Value(args [0] – > ToString())不返回node.js的字符串addon参数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)