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, а просто обьявить ее? Когда в таком случае освободится память, занимаемая структурой?


Ответ на: комментарий от dilmah

Откуда тебе знать какая она :)???

T-34
() автор топика

Provil'no.

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

anonymous
()

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

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

alex_custov ★★★★★
()
Ответ на: комментарий от alex_custov

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

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

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

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