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

Управление динамической памятью при работе с классами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Первый отрицательный и последний положительный элемент читаемый из файла http://www.cyberforum.ru/cpp-beginners/thread1213564.html
Из файла (имя файла вводится с клавиатуры) считывается массив целых чисел. Размер массива заранее неизвестен. Выведите в файл количество четных чисел, расположенных в массиве между первым и положительным последним отрицательным числами в массиве.Подскажите что не так. #include<iostream> #include<vector> #include<fstream> #include<string> using namespace std; bool prov(double num)
C++ Счетчик в Binsearch Поиск в отсортированной строке длины n буквы (char k) Помогите поставить счетчик, который будет показывать, сколько раз встречается эта буква в слове int BinSearch(string M, int n, char k) { int L = 0; int R = n; int m; int z = 0; if (M==k){m=1;} else{ http://www.cyberforum.ru/cpp-beginners/thread1213557.html
Как работает конструктор копирования? C++
ECM::ECM(const ECM &E) //êîíñòðóêòîð êîïèðîâàíèÿ { if (E.type) {type= new char ; strcpy(type, E.type);} else type=0; type=E.type;Ghz=E.Ghz;Memory=E.Memory;Gb=E.Gb; } Объясните как работает это механизм (конструктор копирования) и как его правильно вызвать?
Найти 10 первых натуральных чисел, оканчивающихся на цифру 7 кратных числу 9, не меньших 100 (Pascal -> C++) C++
Найти 10 первых натуральных чисел, оканчивающихся на цифру 7 кратных числу 9 и находящихся в интервале левая граница которого равна 100 var i, v : integer; begin v:=99; for i := 1 to 10 do begin while true do begin Inc(v); if ((v - 7) mod 10 = 0) And (v mod 9 = 0) then begin writeln(v); break;
C++ Повторный ввод данных после ошибки http://www.cyberforum.ru/cpp-beginners/thread1213538.html
как после слов "ошибка!!!..." вернуться для повторного ввода оценки ученику?#include <iostream> #include <fstream> #include <string> using namespace std; int k, i, r; char u; string line; int main() { setlocale (0,"rus");
C++ Количество трёхзначных чисел, все цифры которых разные Есть задача Составить прорамму , которая считает количество натуральных чисел ,в которых все 3 цифры разные. Вот , что я написал int col = 0; for (int i = 100 ; i < 1000; i++) if (((i/100) != ((i%100)/10)) && ((i/100) != (i%10) && (i%10)!= ((i%100)/10))) col++; cout << col; Но меня смущает конечный результат. Каков должен быть ответ ? И если можно другие варианты решения задачи . подробнее

Показать сообщение отдельно
Divergence
7 / 7 / 0
Регистрация: 19.06.2013
Сообщений: 174
22.06.2014, 02:29  [ТС]     Управление динамической памятью при работе с классами
Ребят... или вы меня запутали или я вообще ничего не понимаю...
Провел тест, написал микро программку для тестирования сабжа.
Вот она:
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
36
37
38
39
40
class cTestPointer
{
public:
    int* masInt;
    float* masFloat;
 
    cTestPointer(void)
    {
        masInt = new int[64];
        masFloat = new float[128];
    }
 
    void DoSomething(void)
    {
        for(int i=0; i < 64; i++)
        {
            masInt[i] = i + 1;
        }
        for(int i=0; i < 128; i++)
        {
            masFloat[i] = i*3;
        }
        masFloat[0] = masInt[1];
    }
 
    ~cTestPointer(void)
    {
        delete [] masInt;
        delete [] masFloat;
    }
 
};
void main(void)
{
        cTestPointer *tp;
    tp = new cTestPointer();
    tp->DoSomething();
    //delete tp;    
    tp->~cTestPointer();
}
При вызове функции delete, вылезает ошибка. Почему? Ведь мы выделили место в динамической памяти, а затем освободили его. Почему оно не работает???
При явном вызове деструктора проблем нет. Но у меня в динамической памяти по прежнему остается место под класс, ведь деструктор не удаляет сам экземпляр класса - он удаляет его члены! И получается, что у меня в динамической памяти сидит экземпляр класса, который мне уже не нужен, но удалять его оттуда я не могу - delete не работает!
Кто-нибудь, объясните этот беспредел оО
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru