Ho iniziato a studiare il C++ e sono arrivato alla faccenda dei puntatori. Premetto che vengo dal PHP quindi questi "problemi" non esistemvano
Ho scritto un po' di codice di prova
#include <iostream>
using namespace std;
main(){
int x = 20;
int* puntatore = NULL;
int* puntatoreX = &x;
puntatore = new int;
*puntatore = 10;
cout << *puntatore << endl;
cout << *puntatoreX << endl;
delete puntatore;
}
Io alla variabile dichiarata normalmente va a finire nella memoria Stack, ma non posso né cancellarla né modificarla durante l'esecuzione del programma, posso creare un puntatore ad essa e posso quindi modificarla ma poi va a finire nell'Heap?
Se volessi usare solo la memoria nell'Heap dovrei usare solo i puntatori? Cioè una cosa del genere?
int* puntatore = NULL;
puntatore = new int;
*puntatore = 10;
Mi sembra un po' prolisso: 3 righe per una variabile? Ma poi sarebbe giusto come metodo (pulito)?
Inoltre con questo metodo se non usassi alla fine
delete puntatore;
Cosa accade? La variabile rimane nell'Heap e non viene cancellata? Se fosse così ammettendo di eseguire il programma molte volte si arriverebbe ad una progressiva saturazione della ram fino a che non si esegua un reboot del sistema giusto?
Scusate tutte queste domande, ma devo dire che sono un po' confuso.
Ah, un'altra cosa
using namespace std; a cosa serve? Nella guida che sto seguendo lo usa, ma non lo spiega. Ho provato ad ometterlo, ma si rifiuta di compilare come se le funzioni non fossero mai state dichiarate, eppure la libreria iostream la avrebbe dovuta caricare, sarò noioso, ma non mi va di ripetere le cose a pappagallo senza sapere cosa succede.
Grazie a chi saprà/vorrà rispondermi.
Ciao!