Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
3 / 3 / 8
Регистрация: 31.01.2016
Сообщений: 129

Как сначала возвратить значение а потом освободить память

09.05.2017, 01:49. Показов 1786. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сначала возвратить переменную типа char а потом освободить память которую она зарезирвировала?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
char* return_remove(PrioQueue *queue)
{
 
    if (queue->root == NULL) {
        return "NULL";
    }
 
    else {
        char* name = malloc(sizeof(char)*10);
 
        q_elem *temp = queue->root;
        name = temp->name;
 
        strcpy(queue->root->name, name);
        queue->root = queue->root->next;
 
        free(&temp->name);
        free(temp);
 
        return name;
//free(name);
      
 
 
    }
}
Есть еще функция peek(PrioQueue *queue) которая возваращает переменную которую нужно возвратить и удалить в return_remove(PrioQueue *queue)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.05.2017, 01:49
Ответы с готовыми решениями:

Как освободить старые ImageVew чтобы освободить память
Привет всем Я новичок поэтому прошу сильно не пинать. В общем мое первое приложение типа интернет магазин. Одно окно в котором...

Во второй массив сначала переписать сначала положительные, потом 0, потом отрицательные
Не могу решить задачу, прямо застрял на ней. Помогите, пожалуйста. Нужно: заполнить массив из 10 элементов положительными и...

Как отсортировать List сначала по первому, потом по второму, потом по третьему полям
Дано лист List<Row> list1; Row - это класс с 3мя int полями. Как отсортировать лист сначала по первому, потом по второму, потом по третьему...

4
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
09.05.2017, 07:52
Лучший ответ Сообщение было отмечено Dimitrij1 как решение

Решение

Цитата Сообщение от Dimitrij1 Посмотреть сообщение
Как сначала возвратить переменную типа char а потом освободить память которую она зарезирвировала?
C
1
2
char *name = return_remove();
free(name);
или сделать статический буфер и не париться с выделениями и освобождениями
C
1
static name[10];
Тут вообще какая-то ерунда написана
Цитата Сообщение от Dimitrij1 Посмотреть сообщение
C
1
2
3
char* name = malloc(sizeof(char)*10);
q_elem *temp = queue->root;
name = temp->name;
зачем выделят память, если потом затираете указатель присваиванием?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.05.2017, 14:36
Цитата Сообщение от shvyrevvg Посмотреть сообщение
сделать статический буфер и не париться с выделениями и освобождениями
Существует большой класс задач (в который входят почти все реальные задачи) для которых это решение совершенно не годится.
1
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
09.05.2017, 15:14
Цитата Сообщение от Байт Посмотреть сообщение
Существует большой класс задач (в который входят почти все реальные задачи) для которых это решение совершенно не годится.
Ну если приложение однопоточное и возвращаемую строку копировать, то проблем не должно возникнуть
А, вообще, конечно все зависит от задачи.
0
3 / 3 / 8
Регистрация: 31.01.2016
Сообщений: 129
09.05.2017, 22:17  [ТС]
Извиняйте, нужно было освободить память вне функции которая возвращает значение. Тоесть в вызывающей...
Статический буфер конечно вариант но не совсем эффективно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2017, 22:17
Помогаю со студенческими работами здесь

Как сделать, чтобы сначала нажималась кнопка с цифрой, потом она выводилась, а потом только проверялось больше/меньше/равно загаданному числу
uses graphabc,ABCButtons; var p,c,i,n,y,g,f,d,o,u,h:longint; l,s:string; btn,h1,h2,h3,h4,h5,h6,h7,h8,h9,h0:buttonabc; z:boolean; ...

Как освободить память?
подскажите как правильно освободить память,спасибо заранее))) #include "stdafx.h" #include <stdio.h> #include...

Как освободить виртуальную память?
какой прогой можно освободить виртуальную памать ? :)

Как правильно освободить память
Есть функция char* md5(const char*). Как освободить память выделенную ею? #include <openssl\md5.h> char* md5(const char* text) { ...

Как правильно освободить память
Здравствуйте все! Подскажите, как правильно освобождать память, выделенную под массив оператором new? int *Arr = new int; ... delete...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru