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

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

Войти
Регистрация
Восстановить пароль
 
Magister
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 6
#1

Удаление памяти посредством delete[] - C++

18.05.2013, 22:08. Просмотров 347. Ответов 2
Метки нет (Все метки)

Добрый день! Столкнулся с проблемой: при удалении выделенной памяти, программа зависает, будто не способна выполнить данный оператор. Ошибок при компиляции не возникает, может кто-то знает, в чём могла бы закрасться проблема? Заранее большое спасибо!

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
int MyArray::iliffeView(int a, int b, int c, int d)
{
    int *vector = new int[size];
    int x = 0;
    for(int i = 0; i <= high[0] - low[0]; ++i)
        for(int j = 0; j <= high[1] - low[1]; ++j)
            for(int k = 0; k <= high[2] - low[2]; ++k)
                for(int l = 0; l <= high[3] - low[3]; ++l)
                    vector[x++] = matrix[i][j][k][l]; 
    int ****base;
    int ***level1[4]; //1
    int **level2[4][2]; //4
    int *level3[8][4]; //8
    
    base = level1;
 
    for(int i = 0; i<4; ++i)
        level1[i] = level2[i];
    
    for(int i = 0; i<4; ++i)
        for(int j = 0; j<2; ++j)
            level2[i][j] = level3[2*i+j];
    
    x = 0;
    for(int i = 0; i<8; ++i)
        for(int j = 0; j<4; ++j){
            level3[i][j] = vector+x;
            vector+=4;
        }
    int answer = *(*(*(*(base + (a - low[0])) + (b - low[1]))+ (c - low[2]))+ (d - low[3]));
    delete[] vector; //проблема здесь!
    return answer;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2013, 22:08     Удаление памяти посредством delete[]
Посмотрите здесь:

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

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

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

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

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

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

почему не delete (выделение памяти) - C++
почему в примерах в мсдне не высвобождается память после использования asctime, ctime? #include &lt;time.h&gt; #include &lt;stdio.h&gt; int...

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

Ошибка освобождения памяти new/delete - C++
При выполнении оператора deleterez вылетает ошибка BLOCK_TYPE_IS_VALID(pHead-&gt;nBlockUse) #include &lt;iostream&gt; using namespace std;...

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

Ошибка при освобождении памяти (delete) - C++
Здравствуйте! Есть массив lines, созданный вот так : int *line = new int ; Потом, пытаюсь его удалить и пересоздать : delete...

Значения сохраняются в памяти после delete - C++
#include &lt;conio.h&gt; #include &lt;iostream.h&gt; int main() { int *a = new int; cout &lt;&lt; a &lt;&lt; endl; cout &lt;&lt; *a &lt;&lt; endl; *a = 18; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
18.05.2013, 22:20     Удаление памяти посредством delete[] #2
Вы изменяете указатель, а это не допустимо, нужно передавать оператору delete именно тот адрес, который был дан оператором new.
Magister
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 6
18.05.2013, 22:23  [ТС]     Удаление памяти посредством delete[] #3
Точно! И как я не заметил)) Спасибо большое!
Yandex
Объявления
18.05.2013, 22:23     Удаление памяти посредством delete[]
Ответ Создать тему
Опции темы

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