Witam,
Uczę się obsługi wskaźników i napisałem taki oto programik. Niestety wywołuje on błąd o naruszeniu ochrony pamięci i nie mogę znaleźć przyczyny.
Tworzę dwa wskaźniki: "s" i "u", a potem wskazuję "u" na "s", zwiększam go, żeby wskazywał na obszar pamieci w którym jest litera "I" i kiedy próbuję ją zmniejszyć dostaję błąd. Program zdecydowanie nie wykracza poza swój przydzielony obszar pamięci, nie wiem gdzie leży błąd i bardzo proszę o pomoc.
Kompilowałem go pod gcc i visual studio 2008; za każdym razem efekt był taki sam.
Pozdrawiam i z góry dziękuję
#include <cstdio>
char* s = new char[];
char* u = new char[];
int main() {
s = "pIec";
u = s;
u ++;
printf("%c",*u); // wypisuje "I", czyli jest dobrze
*u -= 32; /* w tej linijce program się wysypuje z komunikatem
Unhandled exception at 0x00063800 in program.exe: 0xC0000005: Access violation writing location 0x00066969. */
printf("%c",*u);
return 0;
}