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!


  • Mod

    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.


Anmelden zum Antworten