Systemabsturz bei Benutzung von lstrcpy mit delete[]
-
Hallo,
ich habe da ein sehr grosses Problem. Bei der folgenden Kombination, stürzt mir der komplette Rechner ab. Ich habe das Gefühl er fährt sich im Speicher fest.
///////////////////////// Source - Code ////////////////////////////////////////
CFile datei(m_strDate, CFile::modeRead);
DWORD size_buff = datei.GetLength();
TCHAR pStr[100];
TCHAR* temp_pStr = new TCHAR[size_buff];
datei.Read(temp_pStr, size_buff); datei.Close();
lstrcpy(pStr, temp_pStr); // hier erfolgt der Absturz !!!
delete[] temp_pStr;//lstrcpy(pStr, temp_pStr); setze ich lpstrcpy hier ein stürzt es nicht ab macht aber wenig Sinn
SetDlgItemText(IDC_EDIT2, m_strLogDat);Kann mir da jemand helfen bzw. erklären warum das geschieht ?
Im voraus vielen Dank
Micha
-
Bist Du sicher, dass pStr[100] ausreicht? Sobald die Datei größer ist, schreibt lstrcpy(...) über pStr hinaus -> oh, oh, oh! Ich glaube Read(...) hängt kein Nullzeichen an, lstrcpy(...) kopiert und kopiert und kopiert ....
-
Alles klar danke,
hast Recht ich glaube auch das das an Read liegt und das Arry ist zu klein geraten hab das Problem anders behoben trotzdem danke.
MfG
-
Ups Sorry so hab ich es gelöst:
CFile datei(m_strDate, CFile::modeRead);
DWORD size_buff = datei.GetLength();
TCHAR* pStr = new TCHAR[size_buff];
datei.Read(pStr, size_buff);
SetDlgItemText(IDC_EDIT2, pStr);
Sleep(2);
delete[] pStr;
datei.Close();funzt ganz gut ohne lpstrcpy ist e überflüssig hab ich bemerkt.
MfG
-
zu info
TCHAR pStr[100];
TCHAR* temp_pStr = new TCHAR[size_buff];
datei.Read(temp_pStr, size_buff); datei.Close();lstrcpy(&pStr /*hier ist der fehler*/, temp_pStr); // hier erfolgt der Absturz !!!
delete[] temp_pStr;
volker
-
lstrcpy(&pStr /*hier ist der fehler*/, temp_pStr);
Was soll das bitteschön sein?
Zur Info:
Die Adresse eines Zeigers pStr ist ein Doppelzeiger, womit dieser Code schon bei der Kompilierung abbrechen dürfte![ Dieser Beitrag wurde am 09.04.2003 um 12:19 Uhr von RenéG editiert. ]
-
sorry ich sollte wohl heute aufhören
TCHAR pStr[100];
TCHAR* temp_pStr = new TCHAR[size_buff];
datei.Read(temp_pStr, size_buff); datei.Close();pStr==&pStr[0] oder bin ich schon wieder falsch
lstrcpy(&pStr[0] /*hier ist der fehler*/, temp_pStr); //
-
Ja, solltest Du ...
-
sorry wenn ich geistig abwesend bin aber wie dann richtig
char pStr[100];
pStr ist ein pointer
pStr[0] ist das erste element im array
und &pStr[0] kein pointer auf erstes element im array ?
gib mir mal bitte nachhilfe
-
Doch klar, aber ob Du pStr oder &pStr[0] schreibst ist wurscht.
-
danke.