int_to_wchar* - wirft nach einigen erfolgreichen durchläufen exceptions ??
-
HI folgendes problem
[cpp]WCHAR* CUtilitys::int_to_wcharp(int number) { char numberstring[255]; string buffer; _itoa_s(number, numberstring,sizeof(numberstring), 10); buffer = (string)numberstring; g_pLogfile->Textout(RED,buffer.c_str()); int i; WCHAR* result; result = (WCHAR*)malloc(sizeof(buffer)+1); for (i = 0; buffer[i] != 0; i++) { result[i] = buffer[i]; //<<<< plötzlich (nach 19 oder 12 aufrufen) ist result ein BadPointer } result[i] = 0; return result; }[/cpp]mit folgendem Fehlern
First-chance exception at 0x7c92b3fb in BacteriaView.exe: 0xC0000005: Access violation reading location 0x00090020. First-chance exception at 0x0045f30a in BacteriaView.exe: 0xC0000005: Access violation writing location 0x00000000. Unhandled exception at 0x0045f30a in BacteriaView.exe: 0xC0000005: Access violation writing location 0x00000000.hat das etwas damit zutun das ich den Speicher nicht "free()" und wenn jemand schon dabei ist das zu lesen .. wie soll ich free() anwenden ? (es stösst sich ja mit "return")
mfg Birdspider
-
- free() müsstest du in dem Code anwenden, aus dem du diese Funktion aufruftst.
- malloc() und free() sind C - benutze doch besser new und delete
- Ich kann mir nicht vorstellen, dass nach 20 Durchläufen dein Speicher voll ist
Du kannst aber versuchen zu testen, ob malloc() geklappt hat und nur dann deine Schleife durchlaufen.
-
result = (WCHAR*)malloc([b]sizeof(buffer)[/b]+1);wohl eher nicht. woher kommt eigentlich diese sizeof-mania im zusammenhang mit strings?
-
@birdspider: Da du anscheinend ein Windows-Programm schreibst, verwende doch direkt _itow, anstatt erst in einen char* und dann in wchar_t* umzuwandeln.
-
_itow ist einge gute idee thx ..
soda ich werde jetzt einmal das rudherum erläutern, ist vllt doch besser
eine directX-DrawText funktion will den text als LPCWSTR ergo WCHAR* haben (DX funzt hab schon taxt in allen möglichen varianten drauf gehabt)
ich habe 3 int werte die ich mit textbeschreibungen wie strings (oder auch anders) zusammen schnipseln möchte
int A,B,C;
A=3;
B=4;
C=5;so nun folgende umschreibung des problems->
(WCHAR*)output = L"TEXT1: " + A + L" TEXT2: " + B + L" TEXT3: " + C; --->bsp "Kugeln: 45 Würfel: 2 Punkte: 245"
im grunde geht es also um convertierung, formatierung und schlussendlich ein WCHAR* wo alles enthalten sein soll