malloc в C
3 отговора
202 прегледа
malloc в C
Такам, значи имам си една структурка в C на име например root:
struct root
{
struct first *first;
struct second *second;
};
И искам да отделя памет за нея и за first и second, като те двете са масиви с m и n на брой индекса. Как точно да се направи това чрез malloc?
struct root
{
struct first *first;
struct second *second;
};
И искам да отделя памет за нея и за first и second, като те двете са масиви с m и n на брой индекса. Как точно да се направи това чрез malloc?
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 на