Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 02.12.2018
Сообщений: 25

Очистка памяти с delete[]

07.12.2018, 18:05. Показов 1416. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно очистить память перед закрытием программы. Но не могу этого сделать выдает Exception thrown at 0x00FAA3F5 in Project9.exe: 0xC0000005: Access violation reading location 0xCDCDCDD1. Вот примерный код программы(если где-то не хватает скобок, то простите - криво скопировал):
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
41
42
43
44
45
46
47
48
49
50
51
struct dog {
    int age;
    char* name; 
};
int main() {
    int n = 20;
    dog** p = new dog*[n];
 for (int i = 0; i < n; i++) {
        p[i] = NULL;
    }
    char tmp[20];
    int l = 20;
while (1) {
        char a;
        cin >> a;
        switch (a) {
        case ('a'):
            cout << "write indeks" << endl;
            int i;
            cin >> i;
            if (i < n) {
                if (p[i] != NULL) {
                    delete[] p[i]->imie;
                    delete[] p[i];
                }
                int w;
                p[i] = new dog;
                cout << "write name" << endl;
                cin >> tmp;
                l = sizeof(tmp) + 1;
                cout << "write age" << endl;
                cin >> w;
                p[i]->name = new char[l];
                strcpy(p[i]->name, tmp);
                p[i]->name = w;
            }
            else {
                cout << "error: there no such indeks" << endl;
                break;
            }
case ('q'):
            for (int i = 0; i < n; i++) {
                delete[] p[i]->imie;
                delete[] p[i];
            }
            return 0;
            break;
        default:
            cout << "error: wrong command" << endl;
            break;
            }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2018, 18:05
Ответы с готовыми решениями:

Очистка памяти delete[];
Есть функция ввида: void loltest(int md3) { char* randChars; int cCount; if(md3 &lt;= 0) cCount = 13; ...

delete[] *pointer vs. delete pointer и утечка памяти
Здравствуйте! Есть класс &quot;умного&quot; указателя counted_ptr, который удаляет хранящийся в нём T* owned; только если кол-во владельцев...

Delete[] и утечка памяти
Как можно избежать вытока памяти? И вообще почкму криво работает? #include&lt;iostream&gt; #include&lt;windows.h&gt; #include&lt;ctime&gt; ...

11
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
07.12.2018, 18:12
Цитата Сообщение от Ra4ok41 Посмотреть сообщение
p[i] = new dog;
Цитата Сообщение от Ra4ok41 Посмотреть сообщение
delete[] p[i];
В таком случае как раз и надо delete без скобочек
C++
1
delete p[i];
1
0 / 0 / 0
Регистрация: 02.12.2018
Сообщений: 25
07.12.2018, 18:15  [ТС]
Проблема в том, что ошибку выдает в delete[] p[i]->name;
Прошу прощение в конце кода есть
C++
1
delete[] p[i]->imie;
там должно быть(Это не причина ошибки если что)
C++
1
delete[] p[i]->name;
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
07.12.2018, 18:35
C++
1
2
3
4
5
6
7
8
9
10
11
12
            else {
                cout << "error: there no such indeks" << endl;
                break;
            }
            break;  //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        case ('q'):
            for (int i = 0; i < n; i++) {
                if (p[i] != NULL) { //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    delete[] p[i]->name;
                    delete[] p[i];
                }
            }
Ну и
Цитата Сообщение от Ra4ok41 Посмотреть сообщение
l = sizeof(tmp) + 1;
замените на
C++
1
l = strlen(tmp) + 1;
0
0 / 0 / 0
Регистрация: 02.12.2018
Сообщений: 25
07.12.2018, 19:13  [ТС]
zss, Простите, но это опять мой косяк кривого копирования. Сейчас на всякий случай сброшу весь код:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
using namespace std;
 
 
struct pies {
    int wiek;
    char* imie;
    int iloscpot;
};
struct potpsa {
    int wiek;
    char* imie;
};
 
int main() {
    int n = 20;
    pies** p = new pies*[n];
    potpsa** k = new potpsa*[n];
    for (int i = 0; i < n; i++) {
        p[i] = NULL;
    }
    char tmp[20];
    int l = 20;
    while (1) {
        char a;
        cin >> a;
        switch (a) {
        case ('a'):
            cout << "wpisz numer indeksu" << endl;
            int i;
            cin >> i;
            if (i < n) {
                if (p[i] != NULL) {
                    delete[] p[i]->imie;
                    delete[] p[i];
                }
                int w;
                p[i] = new pies;
                cout << "wpisz imie" << endl;
                cin >> tmp;
                l = sizeof(tmp) + 1;
                cout << "wpisz wiek" << endl;
                cin >> w;
                p[i]->imie = new char[l];
                strcpy(p[i]->imie, tmp);
                p[i]->wiek = w;
            }
            else {
                cout << "nieorawidlowa wartosc indeksu" << endl;
                break;
            }
            break;
        case('p'):
            for (int i = 0; i < n; i++) {
                if (p[i] != NULL) {
                    cout << i + 1 << " " << p[i]->imie << " " << p[i]->wiek << endl;
                }
                    if (k[i] != NULL) {
                        cout << "   " << i + 1 << " " << k[i]->imie << k[i]->wiek << endl;
                    }
                    else cout << "   Niema potomkow" << endl;
                }
                break;
        case('c'):
            cout << "wpisz numer indeksu" << endl;
 
            cin >> i;
            if (i < n) {
                if (k[i] != NULL) {
                    delete[] k[i]->imie;
                    delete[] k[i];
                }
                int w2;
                p[i] = new pies;
                cout << "wpisz ilosc potomkow" << endl;
                cin >> p[i]->iloscpot;
                cout << "wpisz imie" << endl;
                cin >> tmp;
                l = strlen(tmp) + 1;
                cout << "wpisz wiek" << endl;
                cin >> w2;
                k[i]->imie = new char[l];
                strcpy(p[i]->imie, tmp);
                k[i]->wiek = w2;
                break;
            }
        case ('q'):
            for (int i = 0; i < n; i++) {
                delete k[i]->imie;
                delete p[i]->imie;
                delete p[i];
                delete k[i];
            }
            return 0;
            break;
        default:
            cout << "nie prawidlowa komanda" << endl;
            break;
            }
            }
        
    
    system("pause");
    return 0;
}
Добавлено через 31 минуту
памагите(
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
07.12.2018, 19:37
Лучший ответ Сообщение было отмечено Ra4ok41 как решение

Решение

Ну так в строках 90-94 Вы так и не исправили на
C++
1
2
3
4
5
6
7
8
9
10
11
 
for (int i = 0; i < n; i++) {
    if (k[i] != NULL) {  //!!!!!!!!!!!!!!!!!!!
                delete k[i]->imie;
                delete k[i];
   }
    if (p[i] != NULL) {  //!!!!!!!!!!!!!!!!!!!
                delete p[i]->imie;
                delete p[i];
    }
}
И еще
C++
1
2
3
4
for (int i = 0; i < n; i++) {
        p[i] = NULL;
        k[i]=NULL; //!!!!!!!!!!!!!!!!!!!
    }
0
0 / 0 / 0
Регистрация: 02.12.2018
Сообщений: 25
07.12.2018, 19:46  [ТС]
zss, я исправлял это не помогло

Добавлено через 6 минут
zss, cпасибо большое помогло
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
07.12.2018, 20: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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
using namespace std;
 
 
struct pies {
    int wiek;
    char* imie;
    int iloscpot;
};
struct potpsa {
    int wiek;
    char* imie;
};
 
int main() {
    const int n = 20;
    pies p[n];
    potpsa k[n];
    for (int i = 0; i < n; i++) {
        p[i].imie = NULL;
        k[i].imie = NULL;
    }
    char tmp[20];
    int l = 20;
    while (true) {
        char a;
        cin >> a;
        switch (a) {
        case ('a'):
            cout << "wpisz numer indeksu" << endl;
            int i;
            cin >> i;
            if (i < n) {
                delete[] p[i].imie;
                int w;
                cout << "wpisz imie" << endl;
                cin >> tmp;
                l = sizeof(tmp) + 1;
                cout << "wpisz wiek" << endl;
                cin >> w;
                p[i].imie = new char[l];
                strcpy(p[i].imie, tmp);
                p[i].wiek = w;
            }
            else {
                cout << "nieorawidlowa wartosc indeksu" << endl;
                break;
            }
            break;
        case('p'):
            for (int i = 0; i < n; i++) {
                if (p[i].imie != NULL) {
                    cout << i + 1 << " " << p[i].imie << " " << p[i].wiek << endl;
                }
                if (k[i].imie != NULL) {
                    cout << "   " << i + 1 << " " << k[i].imie << k[i].wiek << endl;
                }
                else cout << "   Niema potomkow" << endl;
            }
            break;
        case('c'):
            cout << "wpisz numer indeksu" << endl;
 
            cin >> i;
            if (i < n) {
                delete[] k[i].imie;
                int w2;
                cout << "wpisz ilosc potomkow" << endl;
                cin >> p[i].iloscpot;
                cout << "wpisz imie" << endl;
                cin >> tmp;
                l = strlen(tmp) + 1;
                cout << "wpisz wiek" << endl;
                cin >> w2;
                k[i].imie = new char[l];
                strcpy(k[i].imie, tmp);
                k[i].wiek = w2;
                break;
            }
        case ('q'):
            for (int i = 0; i < n; i++) {
                delete k[i].imie;
                delete p[i].imie;
            }
            return 0;
            break;
        default:
            cout << "nie prawidlowa komanda" << endl;
            break;
        }
    }
    system("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 02.12.2018
Сообщений: 25
07.12.2018, 21:18  [ТС]
zss, спасибо за совет, но мне нужно использовать динамическое выделение(так препод сказал)
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
08.12.2018, 07:02
Так оно же остается для поля imie.
И, кстати, тут явно напрашивается переход к ООП.
Это явно улучшает код:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
 
struct potpsa {
    int wiek;
    char* imie;
    potpsa() :wiek(0), imie(nullptr) {}
    potpsa(const potpsa& t) :wiek(t.wiek) {
        size_t L = strlen(t.imie) + 1;
        imie = new char[L];
        strcpy(imie, t.imie);
    }
    potpsa(int w, char* t) :wiek(w) {
        size_t L = strlen(t) + 1;
        imie = new char[L];
        strcpy(imie, t);
    }
    ~potpsa() { delete[] imie; }
    potpsa& operator=(const potpsa& t) {
        if (this != &t)
        {
            delete[] imie;
            size_t L = strlen(t.imie) + 1;
            imie = new char[L];
            strcpy(imie, t.imie);
            wiek = t.wiek;
        }
        return *this;
    }
    virtual void print()
    {
            if (imie != nullptr)
                cout<<imie << " " << wiek << endl;
            else
                cout << "empty slot\n";
    }
};
 
 
struct pies :public potpsa {
    int iloscpot;
    pies():iloscpot(0), potpsa() {}
    pies(const pies& t) :iloscpot(t.iloscpot), potpsa(t) {}
    pies(int is,int w, char* t) :iloscpot(is), potpsa(w,t) {}
    pies& operator=(const pies& t){
        iloscpot = t.iloscpot;
        potpsa::operator=(t);
        return *this;
    }
    void print()
    {
        if (imie != nullptr)
            cout << iloscpot << " " << imie << " " << wiek << endl;
        else
            cout << "empty slot\n";
    }
};
 
int main() {
    const int n = 20;
    potpsa* p[n];
    for (int i = 0; i < n; i++)
        p[i]=new potpsa;
 
    char tmp[20];
    char a='a';
    while (a != 'q') {
        cout << "enter\nc for wpisz potpsa\na for wpisz pies\np for print\nq for quit:\n";
        cin >> a;
        switch (a) {
        case ('a'):
            cout << "wpisz numer indeksu" << endl;
            int i;
            cin >> i;
            if (i < n) {
                int w,ip;
                cout << "wpisz ilosc potomkow" << endl;
                cin >> ip;
                cout << "wpisz imie" << endl;
                cin >> tmp;
                cout << "wpisz wiek" << endl;
                cin >> w;
                delete p[i];
                p[i] = new pies(ip,w,tmp);
            }
            else {
                cout << "nieorawidlowa wartosc indeksu" << endl;
                break;
            }
            break;
        case('p'):
            for (int i = 0; i < n; i++) {
                p[i]->print();
            }
            break;
        case('c'):
            cout << "wpisz numer indeksu" << endl;
            cin >> i;
            if (i < n) {
                delete p[i];
                int w2;
                cout << "wpisz imie" << endl;
                cin >> tmp;
                cout << "wpisz wiek" << endl;
                cin >> w2;
                p[i] = new potpsa(w2,tmp);
                break;
            }
        case ('q'):
            for (int i = 0; i < n; i++) {
                delete p[i];
            }
            break;
        default:
            cout << "nie prawidlowa komanda" << endl;
            break;
        }
    }
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 02.12.2018
Сообщений: 25
11.12.2018, 00:31  [ТС]
zss, снова здравствуйте я немного изменил код и ошибки при delete не заставили себя ждать
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
using namespace std;
 
 
struct pies {
    int wiek;
    char* imie;
    int iloscpot;
    int wiek1;
    char* imie1;
};
 
 
int main() {
    int g = 0;
    int g1 = 0;
    int q[20];
    int il;
    int y[20];
    int n = 20;
    pies** p = new pies*[n];
    for (int i = 0; i < n; i++) {
        p[i] = NULL;
    }
    char tmp[20];
    int l = 20;
 
    while (1) {
        cout << "a-nowy pies, q -wyjscie, p-lista psow, c -potomek psa" << endl;
        char a;
        cin >> a;
        switch (a) {
        case ('a'):
            cout << "wpisz numer indeksu" << endl;
            int z;
            cin >> z;
            if (z < n) {
                if (p[z] != NULL) {
                    delete p[z]->imie;
                    delete p[z];
                }
                y[g1] = z;
                int w;
                p[z] = new pies;
                cout << "wpisz imie" << endl;
                cin >> tmp;
                l = strlen(tmp) + 1;
                cout << "wpisz wiek" << endl;
                cin >> w;
                p[z]->imie = new char[l];
                strcpy(p[z]->imie, tmp);
                p[z]->wiek = w;
                g1++;
            }
            else {
                cout << "nieorawidlowa wartosc indeksu" << endl;
                break;
            }
            break;
        case('p'):
            for (int i = 0; i < n; i++) {
                if (p[i] != NULL) {
                    cout << i + 1 << ":" << " " << p[i]->imie << " " << p[i]->wiek << " " << p[i]->iloscpot << endl;
                    for (int j = 0; j < p[i]->iloscpot; j++) {
                        cout << "   " << " " << p[i][j].imie1 << " " << p[i][j].wiek1 << endl;
                    }
                }
            }
            break;
        case('c'):
            cout << "wpisz numer indeksu psa" << endl;
            cin >> z;
            if (z < n) {
                if (p[z] == NULL) {
                    cout << "niema takiego psa";
                    break;
                }
                int w2;
                cout << "wpisz ilosc potomkow" << endl;
                cin >> il;
                p[z]->iloscpot = il;
                for (g; g < il; g++) {
                    cout << "wpisz imie" << endl;
                    cin >> tmp;
                    l = strlen(tmp) + 1;
                    p[z][g].imie1 = new char[l];
                    cout << "wpisz wiek" << endl;
                    cin >> w2;
                    strcpy(p[z][g].imie1, tmp);
                    p[z][g].wiek1 = w2;
                    q[z] = il;
                }
 
 
            }
            g = 0;
            break;
        case ('q'):
 
 
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < q[i]; j++) {
                    if (p[i] != NULL) {
                        delete p[i][j].imie1;
                        delete p[i]->imie;
                    
                }
            }
            for (int i = 0; i < n; i++) {
                if (p[i] != NULL) {
                    delete p[i];
 
                }
            }
            delete p;
            
            return 0;
        default:
            cout << "nie prawidlowa komanda" << endl;
            break;
        }
    }
    return 0;
}
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
11.12.2018, 09:21
У Вас в Принципе неправильно описана структура
C++
1
2
3
4
5
6
7
struct pies {
    int wiek;
    char* imie;
    int iloscpot;
    int* wiek1; // массив возрастов детей
    char** imie1; // двумерный массив имен детей
};
А p - Одномерный
C++
1
pies* p = new pies[n];
и его на нуль не надо проверять.
А обнулите imie и imie1

Нашел минутку для Вашего кода
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
 
 
struct pies {
    int wiek;
    char* imie;
    int iloscpot;
    int* wiek1;
    char** imie1;
};
 
void MemFree(pies* p, int z)
{
    if (p[z].imie != NULL) {
        for (int i = 0; i < p[z].iloscpot; i++)
            delete p[z].imie1[i];
        delete p[z].imie1;
        delete p[z].imie;
        delete p[z].wiek1;
    }
 
}
 
int main() {
    //int g = 0;
    //int g1 = 0;
    //int q[20];
    //int il;
    int n = 20;
    pies* p = new pies[n];
    for (int g = 0; g < n; g++) {
        p[g].imie = NULL;
        p[g].wiek1 = NULL;
        p[g].imie1 = NULL;
    }
 
    char tmp[100];
 
    while (true) {
        cout << "a-nowy pies, q -wyjscie, p-lista psow:" << endl;
        char a;
        cin >> a;
        switch (a) {
 
        case ('a'):
            cout << "wpisz numer indeksu" << endl;
            int z;
            cin >> z;
            if (z < n) 
            {
                MemFree(p,z);
                cout << "wpisz imie" << endl;
                cin >> tmp;
                int L = strlen(tmp) + 1;
                p[z].imie = new char[L];
                strcpy(p[z].imie, tmp);
                cout << "wpisz wiek" << endl;
                cin >> p[z].wiek;
                cout << "wpisz ilosc potomkow" << endl;
                cin >> p[z].iloscpot;
                p[z].imie1 = new char*[p[z].iloscpot];
                p[z].wiek1 = new int[p[z].iloscpot];
                for (int g = 0; g < p[z].iloscpot; g++) {
                    cout << "wpisz imie" << endl;
                    cin >> tmp;
                    int L = strlen(tmp) + 1;
                    p[z].imie1[g] = new char[L];
                    strcpy(p[z].imie1[g], tmp);
                    cout << "wpisz wiek" << endl;
                    cin >> p[z].wiek1[g];
                }
            }
            else {
                cout << "nieorawidlowa wartosc indeksu" << endl;
            }
            break;
            case('p'):
            for (int i = 0; i < n; i++) 
            {
                if (p[i].imie != NULL) 
                {
                    cout << i + 1 << ":" << " " << p[i].imie << " " << p[i].wiek << " " << p[i].iloscpot << endl;
                    for (int j = 0; j < p[i].iloscpot; j++) {
                        cout << "   " << " " << p[i].imie1[j] << " " << p[i].wiek1[j] << endl;
                    }
                }
            }
            break;
 
        case ('q'):
            for (int i = 0; i < n; i++) 
                MemFree(p,i);
            delete[] p;
            return 0;
        default:
            cout << "nie prawidlowa komanda" << endl;
            break;
            }
        }
        return 0;
    }
Но, тем не менее, такого рода задачи лучше делать через классы,
чтобы данные создавались/уничтожались через конструкторы/деструктор
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.12.2018, 09:21
Помогаю со студенческими работами здесь

delete[] статической памяти
1. Должна ли возникать ошибка (или падение программы) при применении delete к статической памяти? У меня (Microsoft Visual Studio 2005)...

Освобождение памяти delete
Если у меня есть указатель (pt) N-ой степени, я присвоил ему указатель на начало массива (N - 1)ой степени (через new), затем некоторому...

Утечка памяти и delete
Вот накопились вопросы про утечки памяти. 1) Как проявляется утечка памяти? На многих сайтах написано что если не удалять указатели то...

Сколько памяти освобождает delete
История такая, перегрузил операторы new и delete. Теперь хочу отслеживать сколько память выделено и сколько освобождено. С выделением,...

new и delete при освобождении памяти
Здравствуйте. Скажите, пожалуйста что я неправильно делаю. При освобождении памяти. Выделяем память: char **VIRTUAL = NULL; if...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
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, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru