Wskaźniki i dynamiczna alokacja pamięci
Ostatnio zmodyfikowano 2014-08-14 15:51
Haryen Temat założony przez niniejszego użytkownika |
Wskaźniki i dynamiczna alokacja pamięci » 2014-08-14 14:42:01 Witam! Mógłby mi ktoś wytłumaczyć o co chodzi z dynamiczną alokacją pamięci? int * w1; w1 = new int; cout << w1 << endl; delete w1; cout << w1 << endl;
Program wyświetla: 008C3C40 00008123
Nawet jeśli utworzę kilka wskaźników i obiekty, na które pokazują to po użyciu delete każdy wskaźnik zawsze pokazuje na adres 00008123. Dlaczego? Co więcej kod: int * w1; cout << w1 << endl; w1 = new int;
a teraz int * w1; cout << & w1 << endl; cout << w1 << endl; w1 = new int;
O co chodzi? |
|
Jacob99 |
» 2014-08-14 15:30:10 Wskaźnik zawsze na coś pokazuje. Co do tego kodu: int * w1; cout << w1 << endl; w1 = new int; to nie wiem czemu się nie kompiluje, bo powinien się kompilować(nie ma tam błędu); A to na co pokazuje wskaźnik po użyciu delete to zależy od implementacji kompilatora. |
|
Monika90 |
» 2014-08-14 15:40:59 Wskaźnik zawsze na coś pokazuje |
No chyba jednak nie. Jak ma wartość NULL, to na nic nie pokazuje.
int * w1; cout << w1 << endl; w1 = new int;
to nie wiem czemu się nie kompiluje, bo powinien się kompilować(nie ma tam błędu);
|
błąd jest, bo to jest drukowanie niezainicjalizowanej zmiennej, ale faktycznie taki błąd w typowych kompilatorach nie powoduje błędu kompilacji. |
|
Haryen Temat założony przez niniejszego użytkownika |
» 2014-08-14 15:51:43 Używam VS2013 Express. Nie wiem jaki ma kompilator, ale to chyba dobre IDE, więc crapu by nie dali. :D |
|
« 1 » |