Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
#1

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

12.01.2014, 00:12. Просмотров 435. Ответов 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();
Или можно сразу не задумываясь просто удалять память ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2014, 00:12     Удаление динамической памяти
Посмотрите здесь:

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
12.01.2014, 00:15     Удаление динамической памяти #2
Цитата Сообщение от BeginerMan Посмотреть сообщение
Перед тем как прописать :
если выделяете с помощью new[], то и освобождайте с помощью delete[], а не delete

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

Цитата Сообщение от BeginerMan Посмотреть сообщение
Нужно ли мне делать релиз интерфейсов ?
освобождение памяти с помощью delete[] лишь пометит участок как свободный и вызовет деструкторы содержащихся объектов.
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
12.01.2014, 00:48     Удаление динамической памяти #3
Нужно ли мне делать релиз интерфейсов ?
Код C++
1
m_model[0].vertexBuffer->Release();
зависит от того, инициализированы ли эти интерфейсы.
если они были проинициализированы каким-нибудь методов выделения ресурса - то перед делете
их нужно как-то освободить. наверно вызовом релиз или еще как-то. delete это делать не будет.
outoftime
║XLR8║
508 / 430 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
12.01.2014, 00:52     Удаление динамической памяти #4
Цитата Сообщение от BeginerMan Посмотреть сообщение
Нужно ли мне делать релиз интерфейсов ?
Цитата Сообщение от Croessmah Посмотреть сообщение
освобождение памяти с помощью delete[] лишь пометит участок как свободный и вызовет деструкторы содержащихся объектов.
Если память под vertexBuffer выделяется динамически удаляй ее в деструкторе. Почитай о std::shared_ptr & std::unique_ptr, они хорошенько упрощаю задачу управления динамической памятью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2014, 10:59     Удаление динамической памяти
Еще ссылки по теме:

Освобождение динамической памяти - C++
После первого вызова функции(при повторном) пишет ошибку. В функции sort один из элементов массива становится недоступным для чтения. Если...

Теория по динамической памяти - C++
Предположим, применяется оператор new в форме для массива: p=new int ;. n ведь может быть и большим. Может n==1000000? Где запоминается,...

Выделение динамической памяти - C++
Добрый вечер. Помогите разобраться пожалуйста! Суть такова: есть файл, в нем есть данные, мне надо их оттуда считать и вывести на...

Выделение динамической памяти - C++
Чем int *List = new int; delete List; отличается от обычного массива (int List) ? Нет, я понимаю, что создал динамическую...

Вопросы по динамической памяти. - C++
У меня вопросы по работе с динамической памятью. Пожалуйста, помогите разобраться с этой темой. - чем отличается free() от delete? и...

Массив в динамической памяти - C++
какая разница между int *x=new int(10); и int *x=new int; ?


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

Или воспользуйтесь поиском по форуму:
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
12.01.2014, 10:59  [ТС]     Удаление динамической памяти #5
Ага, спасибо ребят.
Теперь понятно
Yandex
Объявления
12.01.2014, 10:59     Удаление динамической памяти
Ответ Создать тему
Опции темы

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