- 7 Dicembre 2010
- 37
- 0
- Miglior risposta
- 0
Creo questa discussione, con l’intento di riuscire a colmare un mio dubbio sull’uso dei puntatori, in particolare sull’allocazione della memoria in modo dinamico con il mermory allocation.
Come è possibile che facendo per esempio un programmino del genere:
Riesco senza problemi a continuare a riempire questo “vettore” fino alla cella p[17] e addirittura posso mettere anche un valore nella p[200]?
Non dovrebbe invece esserci spazio solo per due interi che ho allocato dinamicamente con la malloc, la quale ha restituito l’indirizzo del primo blocco contiguo di byte allocando (ovvero riservando spazio in memoria) due interi, cioè 8 byte di RAM ?
Nella mia testa, potrebbero essere utilizzati SOLTANTO p[0], che corrisponde a *p e p[1] che sarebbe il primo intero del primo blocco di RAM, e p[2], che sarebbe il secondo blocco di RAM corrispondete appunto al secondo intero.
Ma nella pratica purtroppo non è così, perché riesco ad utilizzare anche altre caselle di questa sorta di vettore-puntatore.
Quindi, come è possibile tutto questo? E in realtà cosa sono questi p[1],p[2],p[3] etc? Il codice viene compilato senza dare alcun problema, e la cosa mi preoccupa abbastanza. Grazie per la cortese attenzione.
Come è possibile che facendo per esempio un programmino del genere:
Codice:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
Riesco senza problemi a continuare a riempire questo “vettore” fino alla cella p[17] e addirittura posso mettere anche un valore nella p[200]?
Non dovrebbe invece esserci spazio solo per due interi che ho allocato dinamicamente con la malloc, la quale ha restituito l’indirizzo del primo blocco contiguo di byte allocando (ovvero riservando spazio in memoria) due interi, cioè 8 byte di RAM ?
Nella mia testa, potrebbero essere utilizzati SOLTANTO p[0], che corrisponde a *p e p[1] che sarebbe il primo intero del primo blocco di RAM, e p[2], che sarebbe il secondo blocco di RAM corrispondete appunto al secondo intero.
Ma nella pratica purtroppo non è così, perché riesco ad utilizzare anche altre caselle di questa sorta di vettore-puntatore.
Quindi, come è possibile tutto questo? E in realtà cosa sono questi p[1],p[2],p[3] etc? Il codice viene compilato senza dare alcun problema, e la cosa mi preoccupa abbastanza. Grazie per la cortese attenzione.