Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Sergikx
1 / 1 / 1
Регистрация: 10.09.2014
Сообщений: 59
#1

Функция для очистки памяти, выделенную под массив структур - C++

14.03.2015, 16:28. Просмотров 500. Ответов 3
Метки нет (Все метки)

Как правильно очистить память в данном случае?
Есть структура
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct a
{
    char *a1;//выделял память под строку
    char *a2;
    union Info
    {
        struct b
        {
            char *b1;//выделял память под строку
        }bb;
        struct c
        {
            char *c1;//выделял память под строку
            char *c2;
        }cc;
    }info;
}*aa;//выделял память под массив структур
зы. очистка памяти в отдельной функции
http://www.cyberforum.ru/cpp-beginners/thread1966608.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2015, 16:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Функция для очистки памяти, выделенную под массив структур (C++):

Выделение памяти под массив структур
Добрый день. Подскажите в чём ошибка. #pragma hdrstop #pragma argsused...

Выделение памяти под массив структур
Возникла проблема в том что не могу никак эфективно реализовать выделение...

Выделение динамической памяти под массив структур
Здравствуйте! Пытаюсь выделить память под массив структур, считать с...

Выделение динамической памяти под массив структур
Добрый день, уважаемые! Пишу функцию выделения памяти под массив структур. Но...

Динамическое выделение памяти под массив структур (new/delete)
Люди добрые, подскажите пожалуйста, где в моем коде закралась ошибка? Интернет...

3
zss
Модератор
Эксперт С++
6953 / 6515 / 4136
Регистрация: 18.12.2011
Сообщений: 17,184
Завершенные тесты: 1
14.03.2015, 16:40 #2
Лучший ответ Сообщение было отмечено Sergikx как решение

Решение

Цитата Сообщение от Sergikx Посмотреть сообщение
char *b1;//выделял память под строку
}bb;
struct c { char *c1;//выделял память под строку
c1 и b1 лежат в одном месте.
Когда выделяете память под c1 портите адрес b1.
Так и задумано?

А так порядок должен быть такой
1. В каждом элементе aa[i] удаляете c1,c2,a2,a1
2. Удаляете aa.

b1 удалять не нужно по вышеуказанной причине.
1
Sergikx
1 / 1 / 1
Регистрация: 10.09.2014
Сообщений: 59
14.03.2015, 16:52  [ТС] #3
zss, смысл в следующем:в зависимости от a2 будет выделяться память под b1, либо под c1
0
zss
Модератор
Эксперт С++
6953 / 6515 / 4136
Регистрация: 18.12.2011
Сообщений: 17,184
Завершенные тесты: 1
14.03.2015, 16:57 #4
Но в union у Вас хранятся не данные а УКАЗАТЕЛИ.
Соответственно без разницы под что выделять память.
Адрес b1 будет синоним адреса c1
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2015, 16:57
Привет! Вот еще темы с решениями:

Вылетает функция очистки памяти двумерного динамического массива
Я написал функции добавления и удаления столбцов и строчек двумерного...

Не могу удалить динамически выделенную память под массив
Здравствуйте. Изучил сегодня динамическое выделение памяти и не могу ее...

Освобождение памяти, выделенной на динамический массив структур
Есть динамический массив структур. Как я понимаю, delete A не производит...

Динамический массив структур и функция
Требуется передать в функцию динамический массив структур для редактирования...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru