2013-07-17 1 views
0

나는 Mex를 처음 사용합니다. C++ Mex 파일을 빌드 한 후에 런타임에 즉시이 오류가 발생합니다.Mex 런타임 오류 : 예기치 않은 표준 표현

>> [a b c] = read_svm('/All/testhalf_Anger_1.libsvm'); 
Unexpected Standard exception from MEX file. 
What() is:basic_string::_S_construct NULL not valid 
.. 

이 내 코드의 실행이

사전에 감사 모습입니다!

+0

를 디버그 MEX 파일과 유사한 일을 수행하여이 문제를 해결할 수 있습니다 -files.html – Shai

+0

관련 질문 : [C++ : 예외가 스크립트에서 발생했습니다 : 기본 \ _string :: \ S S \ _ NULL이 유효하지 않습니다.] (http://stackoverflow.com/questions/12052997/c-exception-occurred-in- script-basic-string-s-construct-null-not-valid) –

답변

2

오류 메시지는 해당 코드의 어딘가에서 생성자에 NULL 포인터를 전달하여 basic_string을 구성하는 중 아주 잘 설명합니다. CharT *을 사용하는 basic_string 생성자는 포인터가 NULL이 아니어야하며 충돌이 발생해야합니다.

클래스 템플릿의 경우 std::stringstd::wstring은 typedef이므로이 코드 중 하나를 코드에 사용할 수 있습니다. http://www.mathworks.com/help/matlab/matlab_external/debugging-cc-language-mex :

당신은 다음 코드

char const *p = nullptr; 

// std::string s(p); // This is not allowed! 
std::string s(p ? p : ""); // string will be empty if p is NULL