Есть структура:
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 
  
    
      Ответ на:
      
          комментарий
        от alex_custov 
  
    
      Ответ на:
      
          комментарий
        от anonymous 
  
    
        Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
      
Похожие темы
- Форум Программа на Си падает, при выделении памяти (2014)
 - Форум Выравнивание в структуре (2005)
 - Форум Динамическое распределение памяти (2014)
 - Форум Правильно ли я организовал выделение памяти? (2014)
 - Форум Есть ли здесь утечка памяти и если нет, как назвать проблему? (2016)
 
- Форум Размер структуры с вложенным массивом структур (2013)
 - Форум Как узнать, сколько памяти доступно для выделения? (2005)
 - Форум Чем чревата прямая инкапусляция структур в си? (2016)
 - Форум K&R Задача 1.16 (2015)
 - Форум покритикуйте функцию (2009)