Динамическое выделение памяти под структуру и ее освобождение - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть структура:
struct mystack{
    int kol;
    char info[255];
};
Есть функция которая выделяет для нее память:
mystack* crstack(){  //создание пустого стека
    mystack *st; 
    
    st = new mystack;
    st->kol = 0;
 
    return st;
};
Нужна функция которая будет освобождать выделенную память. Пишу ее таким образом:
void delfromstack(mystack &st2){  //добавление элемента в стек
      
      delete st2;
      
};
Но в функции удаления выдает ошибку "[Error] type 'struct mystack' argument given to 'delete', expected pointer". Подскажите пожалуйста, как это исправить?

Решение задачи: «Динамическое выделение памяти под структуру и ее освобождение»

textual
Листинг программы
typedef struct mystack {
    int kol;
   char info[255];
   } mystk;
// *********************
 
mystk* crstack(void) {
    mystk   *st;
   st = (mystk*)malloc(sizeof(mystk));
    st -> kol = 0;
   return;
   }
// *********************
 
void    delfromstack(mystk* st) {
    free(st);
   }

Объяснение кода листинга программы

  1. Создание структуры типа mystk, которая содержит массив символов и целочисленное значение.
  2. Выделение памяти под структуру типа mystk с использованием функции malloc.
  3. Инициализация поля kol структуры mystk значением 0.
  4. Функция delfromstack освобождает память, выделенную под структуру mystk, используя функцию free.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы