void IRC_MESSAGE::GetHeader()
{
int find_first = this->FindChar(this->MessageText, ':');
int find_second = 0;
if(find_first > -1) {
find_second = this->FindChar(this->MessageText+(find_first + 1), ':');
if(find_second > -1) {
//dies here on this message
//this->MessageText = ":irc.betawarz.com 001 Fatal-Error[B] :Welcome to the Beta IRC Network Fatal-Error[B][email protected]"
this->Header = (char *)malloc((find_second - find_first) + 1);
ZeroMemory(this->Header, (find_second - find_first) + 1);
memcpy(this->Header, this->MessageText + (find_first + 1),
(find_second - (find_first + 1)));
return;
} else {
this->Header = (char *)malloc(find_first + 1);
ZeroMemory(this->Header, find_first + 1);
if(find_first == 0) {
this->Header = "";
} else {
memcpy(this->Header, this->MessageText, find_first);
}
return;
}
}
this->Header = "NA";
return;
}
-----------------------------
char *Header; char *MessageText;
int FindChar(char *,char),只返回所述值的第一個索引,如果沒有找到,則返回-1。C++ 2010,堆的腐敗?
我的問題在這裏是我的標記,它死在這裏,當它有下面的MessageText。 它崩潰說:這可能是由於堆的腐敗,這表明ApplicationX.exe或它已加載的任何DLL中的錯誤。 但我在此之前得到3或4條消息,不會折騰這次崩潰。 其他人在這裏可以看到我的問題。
在C++中使用'new'和'delete',而不是'malloc'和'free'。 – Downvoter
您不需要代碼中的所有'this->' –
您是否正在使用MFC? – stackptr