我爲未來傳遞給strcpy
和strcat
的線程生成了一個大字符。一切都還好,直到我需要用一個字符串中的所有空格替換逗號。我搜索瞭解決這個here嘗試替換字符串中的字符時發生內存泄露
問題是,現在我有一個內存泄漏和與此消息的程序退出:
_Dumping objects ->
{473} normal block at 0x0091E0C0, 32 bytes long.
Data: <AMLUH UL619 BKD > 41 4D 4C 55 48 20 55 4C 36 31 39 20 42 4B 44 20
{472} normal block at 0x049CCD20, 8 bytes long.
Data: < > BC ED 18 00 F0 EC 18 00
{416} normal block at 0x082B5158, 1000 bytes long.
Data: <Number of Aircra> 4E 75 6D 62 65 72 20 6F 66 20 41 69 72 63 72 61
{415} normal block at 0x04A0E200, 20 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{185} normal block at 0x049DA998, 64 bytes long.
Data: < O X8 8 > DC 4F BB 58 38 C5 9A 06 38 D3 88 00 00 00 00 00
PythonPlugin.cpp(76) : {172} normal block at 0x0088D338, 72 bytes long.
Data: < a X F <) > DC 61 BB 58 18 BB 46 06 3C 29 8A 06 CD CD CD CD
Object dump complete._
下面的代碼,所以你可以告訴我,我做錯了什麼:
問題的代碼:
char* loop_planes(ac){
char *char1=new char[1000];
for(...){
strcpy(char1,"Number of Aircrafts\nHour of simulation\n\n");
string tmp2=fp.GetRoute();
tmp2.replace(tmp2.begin(),tmp2.end()," ",","); #PROBLEM IS IN THIS LINE
const char *tmp3=tmp2.c_str();
strcat(char1,tmp3);
}
return char1;
}
的fp.GetRoute()
就像是一個字符串這樣的:AMLUH UL619 BKD UM748 RUTOL
而且,現在我正在談論的內存分配,我不想和內存泄漏任何未來的問題,所以當我應該delete
char1
,知道線程會調用這個函數?
我在你寫的'#線是在這條線'''看到沒有問題。 – PaulMcKenzie
我都沒有,但這就是調試停止的地方 –
從來沒有使用過「替換」 - 我認爲你的使用不符合這裏的任何原型:http://www.cplusplus.com/reference/string/string/replace/ – PaulMcKenzie