|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Napoli
Messaggi: 999
|
[c - gcc] Realloc in una funzione
allora ragazzi ho un area di memoria allocata con calloc...
ho la necessità di fare una realloc all'interno di una routine... passo il puntatore, ma quando avviene la realloc, è come se ne venisse referenziato un secondo, e quindi nel main nn ottengo la modifica, ecco un test d'esempio della situazione : Codice:
#include <stdio.h>
#include <stdlib.h>
void expand(double *var);
int main(int argc, char *argv[])
{
double *var;
var=calloc(5,sizeof(double));
var[1]=4;
var[2]=3;
printf("%f %f\n",var[1],var[2]);
expand(var);
printf("%f %f %f\n",var[1],var[2],var[7]);
return 0;
}
void expand(double *var){
var=realloc(var,8*sizeof(double));
var[7]=6;
}
4 3 0 ... la modifica della function non è stata apportata...
__________________
Intel Pentium IV 3,0 GHz, Asus P5SD2-X , 1.0 Gb ddr2, Radeon X550 , Maxtor 160Gb sata, Hitachi 100 gb pata,Piooner Dvr-109 ,Microsoft Windows XP Professional Service Pack 2 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
realloc non garantisce che il blocco di memoria ritornato sia quello iniziale. Devi aggiornare var con il nuovo puntatore, in caso realloc l'avesse cambiato.
Codice:
var = expand(var); Codice:
double* expand(double *var) {
var = realloc(var, 8 * sizeof(double));
var[7] = 6;
return var;
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:19.



















