Ik heb een funtie die een 3 letterige code meekrijgt. De ascii waardes van de afzonderlijke letters worden opgeteld en het totaal wordt verhoogd met 200. Het cijfer dat hier uit komt vormt samen met de 3 letters de nieuwe code. Ik doe dit met de onderstaande code.
De code compileerd foutloos maar als ik hem uitvoer krijg ik een invallid pointer operation, wanneer ik de foutmelding wegklik zie ik wel de juiste NewCode.
Ik heb dit weekend gegoogled maar niet echt iets nuttigs gevonden.
Mijn vermoeden is dat zodra de fuctie out of scope raakt er nog pointers in de functie staan die ik niet verwijderd heb. Ik weet dit echer niet zeker.
Wie weet het wel?
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| AnsiString CreateNewCode(AnsiString Code) { char word[3]; int decimal[4], tmp=200; StrCopy(word, Code.c_str()); for(int i=0; i<3; i++) { decimal[i] = int(word[i]); tmp=tmp+decimal[i]; } AnsiString ff = IntToStr(tmp); return StrCat(Code.c_str(),ff.c_str()); } |
De code compileerd foutloos maar als ik hem uitvoer krijg ik een invallid pointer operation, wanneer ik de foutmelding wegklik zie ik wel de juiste NewCode.
Ik heb dit weekend gegoogled maar niet echt iets nuttigs gevonden.
Mijn vermoeden is dat zodra de fuctie out of scope raakt er nog pointers in de functie staan die ik niet verwijderd heb. Ik weet dit echer niet zeker.
Wie weet het wel?