Friday 15 June 2012

realloc and pointer to integer comparison issues in c structures and functions -



realloc and pointer to integer comparison issues in c structures and functions -

typedef struct { int* data; unsigned int len; }intarr_t; intarr_result_t intarr_push( intarr_t* ia, int val ) { intarr_t* tmp; // warning few arguments function ‘realloc’ tmp = realloc(intarr_t, (ia-> len+1)*sizeof *intarr_t); // problem here.. ia = tmp; ia->data[ia->len+1] = val; (eye = 0; eye < 30; eye++) { // warning passing argument 1 ointarr.c:140:17: error: expected look before ‘intarr_t’ tmp = realloc(intarr_t, (ia->len+1)*sizeof(intarr_t));f ‘free’ makes pointer //integer without cast free(tmp->data[eye]); free(tmp); } }

i tried writing programme append value onto array passed me, these little problems seem occurring no matter do. can explain me underlying problem here , how remedy it?

i have tried everyone's suggestions, getting error:

intarr.c:140:17: error: expected look before ‘intarr_t’ tmp = realloc(intarr_t, (ia->len+1)*sizeof(intarr_t)); ^ intarr.c:140:17: error: few arguments function ‘realloc’

perhaps, should in following.

intarr_result_t intarr_push(intarr_t* ia, int val ) { int *tmp; tmp = realloc(ia->data, (ia->len+1)* sizeof *ia->data); if(tmp) ia->data = tmp; else { free(ia->data); exit(-1);//or homecoming something; } ia->data[ia->len++] = val;//update len homecoming something; }

c pointers memory-management casting warnings

No comments:

Post a Comment