Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Recuperare dati heap
Forum - C/C++ - Recuperare dati heap

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
raptuz (Ex-Member)
Newbie


Messaggi: 14
Iscritto: 28/05/2006

Segnala al moderatore
Postato alle 21:55
Domenica, 19/04/2009
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
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 23:17
Domenica, 19/04/2009
Non si capisce bene ... cosa vorresti fare?


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
raptuz (Ex-Member)
Newbie


Messaggi: 14
Iscritto: 28/05/2006

Segnala al moderatore
Postato alle 23:23
Domenica, 19/04/2009
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

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 23:25
Domenica, 19/04/2009
Scrivi qualche riga su cui basarci ... cosi' si discute meglio ...

P.S. Solo per curiosita' ... a che scopo?


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
raptuz (Ex-Member)
Newbie


Messaggi: 14
Iscritto: 28/05/2006

Segnala al moderatore
Postato alle 23:26
Domenica, 19/04/2009
Lo scopo è la curiosità visto che il nostro professore ci ha detto che è possibile ma non ha voluto dirci come

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 23:35
Domenica, 19/04/2009
Beh ... non so se c'entra qualcosa ma per esempio

Codice sorgente - presumibilmente C++

  1. void f()
  2. {
  3.   int *p=(int *)malloc(1000);
  4.   *p = 0x12345678;
  5.   printf("Nella f() ... %p -> %X\n", p, *p);
  6. }
  7.  
  8. int main()
  9. {
  10.   int j;
  11.  
  12.   f();
  13.  
  14.   printf("Nel main  ... %p -> %X\n", (int *)(*(&j-3)), *((int *)(*(&j-3))));
  15.  
  16.   return 0;
  17. }


Ultima modifica effettuata da theprogrammer il 20/04/2009 alle 0:15


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
eddiewrc (Member)
Expert


Messaggi: 560
Iscritto: 30/04/2006

Segnala al moderatore
Postato alle 19:59
Lunedì, 20/04/2009
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.


La conoscenza non ha mai fatto del male a nessuno. Caso mai hanno fatto del male quelli che hanno impiegato MALE la loro conoscenza. La conoscenza deve essere libera e quando dico libera intendo "free as freedom" e non "free as a free beer".
PM Quote
Avatar
raptuz (Ex-Member)
Newbie


Messaggi: 14
Iscritto: 28/05/2006

Segnala al moderatore
Postato alle 20:15
Lunedì, 20/04/2009
Testo quotato

Postato originariamente da theprogrammer:

Beh ... non so se c'entra qualcosa ma per esempio

Codice sorgente - presumibilmente C++

  1. void f()
  2. {
  3.   int *p=(int *)malloc(1000);
  4.   *p = 0x12345678;
  5.   printf("Nella f() ... %p -> %X\n", p, *p);
  6. }
  7.  
  8. int main()
  9. {
  10.   int j;
  11.  
  12.   f();
  13.  
  14.   printf("Nel main  ... %p -> %X\n", (int *)(*(&j-3)), *((int *)(*(&j-3))));
  15.  
  16.   return 0;
  17. }




ecco quello che intedevo io è nel print del main vorrei stampare l'indirizzo di p sullo heap senza passargli il puntatore

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:24
Lunedì, 20/04/2009
E il codice che ti ho mostrato non lo fa ? Lo hai provato ?


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo