Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для BeginerMan
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427

Удаление динамической памяти

12.01.2014, 00:12. Показов 1200. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здрасьте.
Имеется вот такая структура.
C++
1
2
3
4
5
6
7
8
9
10
11
struct ModelType
{
    DWORD FVF;
    IDirect3DVertexBuffer9* vertexBuffer;
    IDirect3DIndexBuffer9* indexBuffer;
    IDirect3DTexture9* texture;
    int vertexCount;
    int indexCount;
    LPCWSTR namemodel;
};
ModelType* m_model;
Здесь IDirect3DVertexBuffer9 и IDirect3DIndexBuffer9 и IDirect3DTexture9 это интерфейсы directx9.
Я выделяю память под структуру вот так:
C++
1
2
m_model = new ModelType[5];
if(!m_model) return false;
Дальше в эту структуру я записываю данные.
И вот вопрос.
Перед тем как прописать :
C++
1
delete m_model;
Нужно ли мне делать релиз интерфейсов ?
C++
1
m_model[0].vertexBuffer->Release();
Или можно сразу не задумываясь просто удалять память ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.01.2014, 00:12
Ответы с готовыми решениями:

Удаление динамической памяти
В книгах по С++ я читал про утечку памяти. Я решил создать программу, в которой будет выделаться 1 Гб памяти и не удаляться. Будучи...

Удаление new из динамической памяти
Здравствуйте, у меня есть следующее присвоение: sign->numb = new int; Мне нужно от него избавиться в конце программы, но delete...

Удаление структуры из динамической памяти
struct aTapeElement { char Operator; float Operand; aTapeElement *NextElement; }; Это кусок кода из 15-го урока книги...

4
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,029
Записей в блоге: 1
12.01.2014, 00:15
Цитата Сообщение от BeginerMan Посмотреть сообщение
Перед тем как прописать :
если выделяете с помощью new[], то и освобождайте с помощью delete[], а не delete

C++
1
if(!m_model) return false;
new кидает исключение, так что до сюда не дойдет, если не удастся выделить память

Цитата Сообщение от BeginerMan Посмотреть сообщение
Нужно ли мне делать релиз интерфейсов ?
освобождение памяти с помощью delete[] лишь пометит участок как свободный и вызовет деструкторы содержащихся объектов.
1
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
12.01.2014, 00:48
Нужно ли мне делать релиз интерфейсов ?
Код C++
1
m_model[0].vertexBuffer->Release();
зависит от того, инициализированы ли эти интерфейсы.
если они были проинициализированы каким-нибудь методов выделения ресурса - то перед делете
их нужно как-то освободить. наверно вызовом релиз или еще как-то. delete это делать не будет.
1
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
12.01.2014, 00:52
Цитата Сообщение от BeginerMan Посмотреть сообщение
Нужно ли мне делать релиз интерфейсов ?
Цитата Сообщение от Croessmah Посмотреть сообщение
освобождение памяти с помощью delete[] лишь пометит участок как свободный и вызовет деструкторы содержащихся объектов.
Если память под vertexBuffer выделяется динамически удаляй ее в деструкторе. Почитай о std::shared_ptr & std::unique_ptr, они хорошенько упрощаю задачу управления динамической памятью.
1
 Аватар для BeginerMan
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
12.01.2014, 10:59  [ТС]
Ага, спасибо ребят.
Теперь понятно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.01.2014, 10:59
Помогаю со студенческими работами здесь

Удаление объекта, созданного в динамической памяти
Здравствуйте! Подскажите, пожалуйста, правильное решение такой проблемы (возможно, это и не проблема вовсе :) . Вот фрагмент кода: ...

Удаление вектора из области динамической памяти.
Всем привет! Прошу разъяснить. Как правильно удалить содержимое вектора? class Coordinate { public: Coordinate() {} int...

Удаление динамической памяти из другой функции
Можно ли удалить массив, находясь в другой функции? По логике после delete мы пишем название переменное, т.е. адрес первого эл. ...

Выделение и удаление памяти, выделенной для динамической строки
Данная функция производит ввод и собственно контроль ввода (размер массива от 1 до 20, иначе должна выдавать ошибку; при вводе букв также...

Не могу понять причину ошибки (связано с выделением динамической памяти под двумерный массив и ее удаление)
Я студент 1 курса , и выполняя задание столкнулся с проблемой. Вот само задание: Ввести оценки N учеников по K предметам. Определить и...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
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 и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru