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

Не могу разобраться с указателями(не понимаю сути освобождения памяти) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Цикл на проверку введённых данных http://www.cyberforum.ru/cpp-beginners/thread824465.html
Здравствуйте. Мне нужно проверить вводимые данные в двумерный массив. Всё бы хорошо, если бы на последнюю строчку ввода при правильном вводе программа бы не жаловалась. Пример: ввожу всё время 1...
C++ Закрывается ехе-файл Всем доброго время суток! Возникла такая дурацкая проблема, не могу разобраться. Пишу на 10й студии, обычное консольное приложение. Программа работает как надо, но когда запускаю ехе-файл из папки... http://www.cyberforum.ru/cpp-beginners/thread824464.html
Поиск методом золотого сечения C++
Здравствуйте, вот задался целью написать поиск в большом массиве, с помощью метода золотого сечения: вернуть функция должна номер элемента в массиве, если он там есть, -1, в случае, если элемент...
Отобразить количество используемой динамической памяти C++
С помощью средств мониторинга реализовать следующий функционал проги: 1. отобразить кол-во используемой дин. памяти перед объявлением дин. массивов и переменных. 2. отобразить кол-во используемой...
C++ Линейный поиск в числовом массиве с барьером и без барьера по числовому ключу http://www.cyberforum.ru/cpp-beginners/thread824447.html
Линейный поиск в числовом массиве с барьером и без барьера по числовому ключу. Не могу понять почему ругается на поиск с барьером. Помогите разобраться. // lab4.cpp: определяет точку входа для...
C++ Ошибка линковки - error LNK2019: ссылка на неразрешенный внешний символ Что может быть не так? есть файл test.h #ifndef _T_ #define _T_ template<class T> class test { //.... }; подробнее

Показать сообщение отдельно
Stranger777
4 / 8 / 0
Регистрация: 08.02.2013
Сообщений: 47
01.04.2013, 03:31  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
И в своём коде, вы не совсем то проверяете. Освобождается память под массивом, на который ссылается указатель. Сам же указатель будет жив пока память под объектом не осободится. Вот так попробуйте:
C++
1
2
3
4
5
6
7
TestResource* res = new TestResource(20); // создаля массив
    res->setElement(5, 20);
    cout << res->getElement(5) << endl; // Всё верно. Выводится 20, как и надо было.
    cout << res->returnPtr() << endl;
    res->~TestResource(); // Вот это должно бы по логике вещей уничтожить массив, сообразно delete[] ResPtr.
    cout << res->returnPtr() << endl; 
    cout << res->getElement(5) << endl;
По адресу, который в указателе, уже мусор.
Только перед этим, нужно убрать вызов деструктора, а то будет двойное освобождение памяти.
Понято. всем спасибо!
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru