malloc в C

3 отговора 202 прегледа
#1

malloc в C

Такам, значи имам си една структурка в C на име например root:
struct root
{
struct first *first;
struct second *second;
};

И искам да отделя памет за нея и за first и second, като те двете са масиви с m и n на брой индекса. Как точно да се направи това чрез malloc?

Отговор
в отговор на TBoNe #2

Re: malloc в C


#define NEKAKVO_MAX_M 100000 // primerno -> mozhe wmesto tova MAX_INT da ostawish
#define NEKAKVO_MAX_N 100000

struct root *root_malloc( int m, int n )
{
struct root *r;
struct first *f;
struct second *s;

if( (unsigned)m < NEKAKVO_MAX_M && (unsigned)n < NEKAKVO_MAX_N )
{
r = malloc( sizeof(*r) );
f = malloc( sizeof(*f) * m );
s = malloc( sizeof(*s) * n );
if( f && r && s )
{
r->f = f;
r->s = s;
return r; // WAHOO success
}
// failed - free what's not NULL, NULL's will be skipped by free()
free(r);
free(f);
free(s);
}

return NULL;
}

Редактирано от malkia на

Отговор
в отговор на TBoNe #4

Re: malloc в C

Мдам, видях че си го объркал. Споко

Отговор