problemy ze zrozumieniem malloc/new
Ostatnio zmodyfikowano 2017-03-11 23:30
Anim Temat założony przez niniejszego użytkownika |
problemy ze zrozumieniem malloc/new » 2017-03-11 23:24:21 Kurczę... czegoś nie rozumiem, czy poniższy kod nie powinien zgłosić naruszenia ochrony pamięci? Przecież próbuję dotykać pamięci, do której nie mam uprwnień... czy jestem w błędzie? #include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std;
int main() { char * tablica =( char * ) malloc( 2 ); char * tab = new char[ 2 ]; for( int i = 0; i < 5; ++i ) { tablica[ i ] = 'a'; tab[ i ] = 'a'; } for( int i = 0; i < 5; ++i ) { cout << tablica[ i ]; } cout << endl; for( int i = 0; i < 5; ++i ) { cout << tab[ i ]; } free( tablica ); delete[] tab; return 0; }
|
|
maly7 |
» 2017-03-11 23:28:51 Może zgłosić naruszenie ochrony pamięci ale nie musi. Jeśli pamięć nie jest używana i jakoś udało się "dotknąć" pamięć, nie musi nic zgłaszać. Spróbuj w pętli for zamiast 5 dać 50 :D
@ADD Dlatego należy na to uważać, by nigdzie nie wychodzić poza dostępną pamięć.
pekfos odpowiedział kiedyś fajnie na podobny temat :D http://cpp0x.pl/forum/temat/?id=19873 |
|
Anim Temat założony przez niniejszego użytkownika |
» 2017-03-11 23:30:57 dzięki :) widoczne :) |
|
« 1 » |