使用以下C++代碼時,我在運行時遇到了未處理的異常錯誤,您可以使用Visual Studio進行調試並遵循錯誤。爲什麼會發生這種異常,你能解釋一下嗎?msvcr100d.dll未處理的異常
首先,我定義一個類與會員專區變量「_name」
void insert_Fenster(int pos,wstring name);
wstring get_Fenster_name(int pos);
class Fenster
{
public:
Fenster(wstring name)
:_name(name)
{}
void reload()
{
_name;
insert_Fenster(1,L"temp");
wstring tmp = get_Fenster_name(1);
_name = tmp; //ERROR!!!
}
wstring get_name()
{
return _name;
}
private:
wstring _name;
};
其次,我定義一個類來保存地圖一類
class FensterManager
{
public:
bool has(int pos)
{
if (_mapFenster.find(pos)!=_mapFenster.end())
return true;
else
return false;
}
void insert(int pos,wstring name)
{
if (has(pos))
{
_mapFenster.erase(pos);
}
_mapFenster.insert(make_pair(pos,Fenster(name)));
}
Fenster& get_Fenster(int pos)
{
return _mapFenster.at(pos);
}
private:
static map<int,Fenster> _mapFenster;
};
有些UTIL功能
void insert_Fenster(int pos,wstring name)
{
FensterManager fm;
fm.insert(pos,name);
}
void reload_Fenster(int pos)
{
FensterManager fm;
if (fm.has(pos))
fm.get_Fenster(pos).reload();
}
wstring get_Fenster_name(int pos)
{
wstring name;
FensterManager fm;
if (fm.has(pos))
name = fm.get_Fenster(pos).get_name();
return name;
}
//Init of static member before main function
map<int,Fenster> FensterManager::_mapFenster;
即主要功能
void main()
{
insert_Fenster(1,L"xyz");
reload_Fenster(1);
}
異常發生在「Fenster」類的「重新加載」功能中。
錯誤消息: Regular_Expression.exe中的0x005cca34(msvcr100d.dll)未處理的異常:0xC0000005:訪問衝突寫入位置0xfeeefeee。
請發出原始代碼郵件 – billz
Regular_Expression.exe中的0x005cca34(msvcr100d.dll)未處理的異常:0xC0000005:訪問衝突寫入位置0xfeeefeee。 – rich
順便說一句爲什麼代碼有註釋'//錯誤!!!'是那種一廂情願的想法還是另一個錯誤?還是同樣的錯誤?還是毫無意義的評論? – doctorlove