Oppure

Loading
19/04/09 19:55
raptuz
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 19/04/09 19:55
aaa
19/04/09 21:17
theprogrammer
Non si capisce bene ... cosa vorresti fare?
aaa
19/04/09 21:23
raptuz
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
aaa
19/04/09 21:25
theprogrammer
Scrivi qualche riga su cui basarci ... cosi' si discute meglio ...

P.S. Solo per curiosita' ... a che scopo?
aaa
19/04/09 21:26
raptuz
Lo scopo è la curiosità visto che il nostro professore ci ha detto che è possibile ma non ha voluto dirci come
aaa
19/04/09 21:35
theprogrammer
Beh ... non so se c'entra qualcosa ma per esempio

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 19/04/09 22:15
aaa
20/04/09 17:59
eddiewrc
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.
aaa
20/04/09 18:15
raptuz
Postato originariamente da theprogrammer:

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

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
aaa