LINUX.ORG.RU

выделение памяти и структуры


0

0

Есть структура:

struct BUFF {
int len;
char *buf;
}

Есть функция A которая должна возвращать указатель на структуру BUFF.

Я делаю так:

#define SIZE 16

struct BUFF *a(){

struct BUFF *buff;
buff = malloc(sizeof(struct BUFF));

buff->buf = calloc(SIZE, sizeof(char));
buff.len = SIZE;

return buf;
}

Функция B освобождает память:

void b(struct BUFF *buff){

free(buff->buf);
free(buff);
}

Правильно я делаю? Или память для структуры можно не выделять malloc, а просто обьявить ее? Когда в таком случае освободится память, занимаемая структурой?


Re: выделение памяти и структуры

>Правильно я делаю?

да

generatorglukoff ★★
()

Re: выделение памяти и структуры

> Правильно я делаю?

неправильно выбрана профессия

dilmah ★★★★★
()

Re: выделение памяти и структуры

Provil'no.

Esli prosto ob'yavish strukturu v funkcii lokal'no, to pri vyhody ona unichtozhit'sya i ukazatel' budet ukazyvat' v nikuda.

anonymous
()

Re: выделение памяти и структуры

>>Или память для структуры можно не выделять malloc, а просто обьявить ее

таким образом ты создашь локальный объект, который удалится при выходе из функции, и указатель станет невалидным.

alex_custov ★★★★★
()
Ответ на: Re: выделение памяти и структуры от alex_custov

Re: выделение памяти и структуры

>>Или память для структуры можно не выделять malloc, а просто обьявить ее

> таким образом ты создашь локальный объект, который удалится при выходе из функции, и указатель станет невалидным.

Можно сделать глобальную переменную. Правда память для char *buf все равно придется выделять.

shumer
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.