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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Цикл на проверку введённых данных http://www.cyberforum.ru/cpp-beginners/thread824465.html
Здравствуйте. Мне нужно проверить вводимые данные в двумерный массив. Всё бы хорошо, если бы на последнюю строчку ввода при правильном вводе программа бы не жаловалась. Пример: ввожу всё время 1 или 0, а на последней строке массива программа всё ровно пишет Please enter only 1 (full) or 0 (empty): Вот собственно сам код #include <iostream> #include <iomanip> #include <ctime> #include...
C++ Закрывается ехе-файл Всем доброго время суток! Возникла такая дурацкая проблема, не могу разобраться. Пишу на 10й студии, обычное консольное приложение. Программа работает как надо, но когда запускаю ехе-файл из папки Debug, программа просто закрывается. (В конце стоит getch). Подскажите пожалуйста в чем может быть проблема. http://www.cyberforum.ru/cpp-beginners/thread824464.html
Поиск методом золотого сечения C++
Здравствуйте, вот задался целью написать поиск в большом массиве, с помощью метода золотого сечения: вернуть функция должна номер элемента в массиве, если он там есть, -1, в случае, если элемент попадает в нужный мне диапазон и -2, если он совсем мне не нужен. Но искать элементы он отказывается: все время возвращает либо -1, либо -2 :( int MainWindow::searchId(vector<node> *nodeVector,...
Отобразить количество используемой динамической памяти C++
С помощью средств мониторинга реализовать следующий функционал проги: 1. отобразить кол-во используемой дин. памяти перед объявлением дин. массивов и переменных. 2. отобразить кол-во используемой дин. памяти занятой дин. перем-и после исп. и обработки. 3. отобразить кол-во используемой дин. памяти после освобо-я дин. массивов и перем-ых.
C++ Линейный поиск в числовом массиве с барьером и без барьера по числовому ключу http://www.cyberforum.ru/cpp-beginners/thread824447.html
Линейный поиск в числовом массиве с барьером и без барьера по числовому ключу. Не могу понять почему ругается на поиск с барьером. Помогите разобраться. // lab4.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <stdlib.h> #include <time.h> using namespace std;
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, 01:09     Не могу разобраться с указателями(не понимаю сути освобождения памяти)
Вот я тоже дуб в указателях... помогите пожалуйста кому не лениво... с горем пополам заработал Enter (ноуту пора в утиль), и вот (вопросы изложены в комментариях):

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
27
28
29
30
31
32
33
34
35
#include <iostream>
 
using namespace std;
 
class TestResource{
private:
    int ResVar;
    int ResIndex;
    int ResValue;
    int* ResPtr; // указатель, по которому буду обращаться к массиву int'ов
public:
    TestResource::TestResource(int ResVar){ResPtr = new int[ResVar];}; // Вот он массив, параметр передавался в конструкторе.
    ~TestResource(){if(ResPtr){
        delete[] ResPtr; /* Это массиву конец или всё же только первому элементу? 
                         ...или вообще не то?  */
    }};
    int TestResource::setElement(int ResIndex, int ResValue){
        ResPtr[ResIndex] = ResValue;
        return ResValue;
    };
    int TestResource::getElement(int ResIndex){return ResPtr[ResIndex];};
    int* TestResource::returnPtr(){return ResPtr;};
};
 
int main(){
    TestResource* res = new TestResource(20); // создаля массив
    res->setElement(5, 20);
    cout << res->getElement(5) << endl; // Всё верно. Выводится 20, как и надо было.
    res->~TestResource(); // Вот это должно бы по логике вещей уничтожить массив, сообразно delete[] ResPtr.
    cout << res->returnPtr(); /* Но нихрена подобного. Или я всё делаю так, как надо, то есть
                              сообразно вот этому: [url]http://msdn.microsoft.com/en-us/library/6t4fe76c(v=vs.80).aspx[/url], 
                              но не понимаю сути освобождения памяти? почему тут не что-то вроде null, а число, что это за число, если не адрес и почему это работает именно 
                              так, а не иначе? */ 
    getchar();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru