Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

problemy ze zrozumieniem malloc/new

Ostatnio zmodyfikowano 2017-03-11 23:30
Autor Wiadomość
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?

C/C++
#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;
}
P-158900
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
P-158901
Anim
Temat założony przez niniejszego użytkownika
» 2017-03-11 23:30:57
dzięki :) widoczne :)
P-158902
« 1 »
  Strona 1 z 1