Speicher von Stackobjekten manipulieren erlaubt?
-
Hallo!
Ich bin ein bisschen eingerostet und jetzt weiß ich nicht, ob es erlaubt ist, Objekte am Stack byteweise zu manipulieren.
#pragma pack(1) struct Test { unsigned short x; unsigned int y; unsigned int z; }; #pragma pack() // main Test test = { 1, 2, 3 }; unsigned char* data = (unsigned char*)&test; for(int i = 0; i < sizeof(Test); ++i) data[i] += 3;Denn manchmal bekomme ich nach dem Programmende eine Meldung wie "Stack around 'test' was corrupted" oder so (VS2010).
Oder darf man nur Objekte am Heap so manipulieren?
Danke!
-
Klar darfst du das machen. Aber du hast offensichtlich was falsch gemacht. Zeig mal ein vollständiges Beispiel, an dem man deinen Fehler nachvollziehen kann.