PDA

View Full Version : [C] dubbi su allocazione


misterx
13-06-2012, 10:22
ciao,
ho la seguente funzione:


cnc_rdpdf_subdir(unsigned short FlibHndl, short *num_dir, IDBPDFSDIR *pdf_sdir_in, ODBPDFSDIR *pdf_sdir_out);


il primo parametro è un handle di libreria e mi è chiaro, il secondo è un puntatore ad un numero e sinceramente non è molto chiaro perchè usare un puntatore in luogo di un intero. Il terzo e quarto parametro sono puntatori a strutture che prima di usare se non ricordo male devono essere allocati nel modo seguente:

IDBPDFSDIR *pdf_sdir_in;
ODBPDFSDIR *pdf_sdir_out;

pdf_sdir_in=(IDBPDFSDIR *)malloc(sizeof(IDBPDFSDIR));
pdf_sdir_out=(ODBPDFSDIR *)malloc(sizeof(ODBPDFSDIR));



ipotizzando che abbia capito giusto, l'esecuzione segnala un errore e volevo capire se c'è un modo per capire quanta memoria è stata allocata per le due strutture in quanto mi è venuto il dubbio che non venga allocato nulla.

Altro aspetto poco chiaro è il seguente:


typedef struct idbpdfsdir {
/* input */
char path[212]; /* Path name string */
short req_num; /* Request entry number */
short dummy;
} IDBPDFSDIR ;



per popolare il campo path uso la strcpy() è corretto?

cioè:

strcpy(pdf_sdir_in->path,"C:\PROGRAMMI\");


Scusate le mie domande a volte banali dovute a molta ruggine per quanto concerne il linguaggio C.

grazie

misterx
13-06-2012, 11:44
scusate ma ho risolto

grazie lo stesso

__ZERO_UNO__
13-06-2012, 12:24
E' utilizzato un puntatore per poter modificare il valore dell'area di memoria a cui punta.
Per fare debug puoi usare il noto Valgrind, se usi Unix.

misterx
13-06-2012, 13:30
E' utilizzato un puntatore per poter modificare il valore dell'area di memoria a cui punta.
Per fare debug puoi usare il noto Valgrind, se usi Unix.

sono sotto windows ma grazie per l'informazione