2013-12-13 30 views
0

代碼崩潰,原因不明。我真的不知道爲什麼,我試着在另一臺電腦上運行這個程序,甚至開始一個新的項目,但沒有。我也重新編譯了boost。boost file_mapping異常

try 
{ 
    cout << "A " << file_name << endl;//fine 
    file_mapping m_file(file_name, read_only); 
    mapped_region region(m_file, read_only); 
} catch (interprocess_exception e) 
{ 
    cout << "B|" << file_name << "| ";//empty??? 
    cout << e.what() << endl; 
} 

文件名是100%有效,const char*,代碼奏:

A C:\file 
B || The system cannot find the file path specified. 

但事實是:這種情況只有時,其他工作正常!

+0

任何人,好嗎? – SkyRipper

+0

權限?鎖嗎?死亡/卡住的過程? – sehe

回答

0

哦,等待file_name指向陳舊的數據。

嘗試將filename更改爲std::string。並且當然const char*在初始化filename時仍然有效。

最可能的是,const char*指向不再存在的(堆棧)位置。

如果你有充分的警告編譯激活,您可能會發現在那裏發生這種情況(當編譯器報告「迴歸本土參考」,例如)