raptuz (Ex-Member)
Newbie
Messaggi: 14
Iscritto: 28/05/2006
|
Salve, all'università il nostro prof di informatica ci ha detto che esiste un modo per recuperare i dati sullo Heap se ancora non sono stati sovrascritti, ma non ci ha voluto dire come. Ho ricercato un po' su internet ma non ho trovato nulla in merito, qualcuno saprebbe soddisfare la mia curiosità?
Grazie
Ultima modifica effettuata da raptuz il 19/04/2009 alle 21:55 |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Non si capisce bene ... cosa vorresti fare?
|
|
raptuz (Ex-Member)
Newbie
Messaggi: 14
Iscritto: 28/05/2006
|
scusa cerco di spigarmi meglio,
in pratica vorrei sapere come è possibile creando uno spazio con la malloc in una funzione recuperarlo successivamente nel main senza fare un passaggio di puntatore, oppure dopo aver effettuato la free del puntatore riuscire comunque a recuperare l'indirizzo a cui esso puntava
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Scrivi qualche riga su cui basarci ... cosi' si discute meglio ...
P.S. Solo per curiosita' ... a che scopo?
|
|
raptuz (Ex-Member)
Newbie
Messaggi: 14
Iscritto: 28/05/2006
|
Lo scopo è la curiosità visto che il nostro professore ci ha detto che è possibile ma non ha voluto dirci come
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Beh ... non so se c'entra qualcosa ma per esempio
Codice sorgente - presumibilmente C++ |
void f() { int *p=(int *)malloc(1000); *p = 0x12345678; printf("Nella f() ... %p -> %X\n", p, *p); } int main() { int j; f(); printf("Nel main ... %p -> %X\n", (int *)(*(&j-3)), *((int *)(*(&j-3)))); return 0; }
|
Ultima modifica effettuata da theprogrammer il 20/04/2009 alle 0:15 |
|
eddiewrc (Member)
Expert
Messaggi: 560
Iscritto: 30/04/2006
|
può succedere che allocando della memoria e poi deallocandola senza modificarla il contenuto dell'area in questione non venga alterato, ma questo dipende da come è stata implementata la malloc: alcune malloc "puliscono" la memoria che allocano e altre invece la lasciano come la trovano. stessa cosa per la free.
forse è questo che intendeva, anche se nn è una grande scoperta.
|
|
raptuz (Ex-Member)
Newbie
Messaggi: 14
Iscritto: 28/05/2006
|
Postato originariamente da theprogrammer:
Beh ... non so se c'entra qualcosa ma per esempio
Codice sorgente - presumibilmente C++ |
void f() { int *p=(int *)malloc(1000); *p = 0x12345678; printf("Nella f() ... %p -> %X\n", p, *p); } int main() { int j; f(); printf("Nel main ... %p -> %X\n", (int *)(*(&j-3)), *((int *)(*(&j-3)))); return 0; }
|
|
ecco quello che intedevo io è nel print del main vorrei stampare l'indirizzo di p sullo heap senza passargli il puntatore |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
E il codice che ti ho mostrato non lo fa ? Lo hai provato ?
|
|