다음 코드는통과 C++ 간의 데이터 및
vector<char> buf;
// code that populates the vector
Local<Object> nbuf = Buffer::New(args.GetIsolate(), &buf[0], buf.size());
//return buffer to node
args.GetReturnValue().Set(scope.Escape(nbuf));
노드 업그레이드를 v6.11을 v0.12에서 노드를 업그레이드 한 후 발행의 원인이되는 nodejs는 변경하지 암시 :
Local<Object> nbuf = Buffer::New(args.GetIsolate(), &buf[0], buf.size()).ToLocalChecked());
문제는 노드의 버퍼 내용을 인쇄 할 때 내용이 동일하지 않다는 것입니다. 질문 : 노드 v6.11을 사용할 때 노드 v0.12에서 사용했던 것과 동일한 동작을 어떻게 얻을 수 있습니까?
업데이트 : 몇 가지 연구 후 근본적인 문제를 발견했습니다. 버퍼 : 새로운 호출 ArrayBuffer :: New는 기존 메모리 버퍼의 맨 위에 arrayBuffer를 작성하므로 범위를 벗어나면 버퍼에있는 내용 만 포함됩니다. 스택. In node-v0.12 Buffer : New는 자신이 소유 한 데이터의 복사본을 만드는 것입니다. 문제는 여전히 노드 -v6을 사용하여 동일한 동작을 수행하는 방법을 모르겠다.
은 무엇'ToLocalChecked()가'할 의도는 무엇입니까? – CinCout
@CinCout 노드 API의 일부입니다. MaybeLocal을 로컬로 변환한다
단지 호기심에, 왜 'buf'대신에 '& buf [0]'을 사용합니까? –