我有一個非常簡單的類存根 - 我剛開始做它:我真的這樣愚蠢:此= 0x7ffffffe
class CJSScript
{
public:
CJSScript(std::string scriptfile);
~CJSScript(void);
private:
std::string scriptname;
};
CJSScript::CJSScript(std::string scriptfile)
{
size_t found = scriptfile.find_last_of("/\\");
scriptname = scriptfile.substr(found+1);
printf("should load %s now...", scriptname);
}
然而,在該構造我得到一個異常,this
顯然被設置爲0x7ffffffe
主程序
int _tmain(int argc, _TCHAR* argv[])
{
CJSScript* test=new CJSScript("./script/test.js");
system("pause");
return 0;
}
這到底是怎麼回事。我以爲自己很久以前就有基礎知識,但這是一種妥協。我的或編譯器:)
調試轉儲:
Win32Project3.exe!_output_l(_iobuf * stream, const char * format, localeinfo_struct * plocinfo, char * argptr) Line 1649 C++
Win32Project3.exe!printf(const char * format, ...) Line 62 C
Win32Project3.exe!CJSScript::CJSScript(std::basic_string<char,std::char_traits<char>,std::allocator<char> > scriptfile) Line 11 C++
Win32Project3.exe!wmain(int argc, wchar_t * * argv) Line 38 C++
Win32Project3.exe!__tmainCRTStartup() Line 240 C
可能是一個調用約定相關的錯誤。在某物上使用錯誤的調用約定會產生非常奇怪的副作用。 – cdhowie
你得到的例外究竟是什麼? – Florian
'printf'來自C和期望一個'爲const char *'爲字符串,而不是一個'的std :: string' – dyp