#define n_files 3 // start number of modules (files) in project
#define len_files 25 // length of line with project module name
#define n_var 5 // start number of variables in file
#define len_var 10 // length of variable name
typedef struct
{
char file_name[20],
**var;
int num_of_var;
} EXT_VAR, *P_EXT_VAR;
void main (void)
{
int i=0, k=0, cnt_files=-1, cnt_var=-1;
// Мalloc для массива структур работает
P_EXT_VAR box = (P_EXT_VAR) malloc(n_files*sizeof(EXT_VAR));
// Realloc для массива структур работает
box=(P_EXT_VAR)realloc(box, (10+cnt_files)*sizeof(EXT_VAR));
printf ("More memory for project modules alloced...\n");
// Malloc для символьного массива в структуре работает
box[cnt_files].var=(char**)malloc(n_var*sizeof(char*));
for (i=0; i<len_var; i++)
box[cnt_files].var[i]=(char*)malloc(len_var*sizeof(char));
// Realloc для символьного массива в структуре не работает
box[cnt_files].var=(char**)realloc(box[cnt_files].var, (cnt_var+10)*sizeof(char*));
for (k=0; k<(cnt_var+10); k++)
box[cnt_files].var[k]=(char*)realloc(box[cnt_files].var[k], len_var*sizeof(char));
printf ("Memory for more variables realloced...\n");
free (box); // вся ли выделенная память освобождается?
}
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.