С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Удаление динамического массива - C++

22.02.2011, 08:53. Просмотров 986. Ответов 7
Метки нет (Все метки)

Добрый день, уважаемые форумчане!
Столкнулся со следующей проблемой, реализовал алгоритм перебора перестановок или размещений с повторениями:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
unsigned int k = 2, i, s = 2; //s - количество элементов по которому производится выборка
                 // k - количество элементов, которые выбирают
    int *A = new int[k]; 
 
    for (int j=0; j<k; j++) 
    {
        A[j] = 0;
    }
 
    s=2;
    do 
    {
    i = k;
    
    for (int j=0; j<k; j++) {cout << A[j] << " " ;} cout << endl;
 
    while (A[i-1]==s-1) {A[i-1]=0; i--;}
    
    A[i-1]++;
    }
    while(i!=0);
    delete []A;
без последней строчки, т.е. без delete []A; все работает замечательно, но когда я собираюсь очистить память с помощью оператора delete, то вылетает ошибка и я никак не могу взять в толк - что я делаю здесь не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2011, 08:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление динамического массива (C++):

Удаление динамического массива - C++
Доброго времени суток! Задача такова, что надо организовать бесконечный ввод в массив. Ввод прекращается после 0. Возникла проблема:...

Удаление динамического массива - C++
Здравствуйте! Имею следующий вопрос: создаётся массив таким образом: int elCount = 10; double* x = new double;

Удаление динамического массива - C++
есть динамический массив: double** Mas2 = new double*; for(int i=0;i&lt;=kol2;i++) Mas2=new double; Как удалить данный массив...

Удаление динамического массива - C++
доброго времени суток. написал программу, в которой создается динамический массив. с ним проводим определенные операции, а в конце надо его...

Удаление динамического массива - C++
Всем привет!!! Столкнулся со следующей проблемой. В литературе оговоренно, что для удаления всего массива из динамической памяти,...

Удаление динамического массива - C++
Привет. Сделал программу с 3 динамическими массивами, но дело в том, что 2 из них, размер которых задается с клавиатуры, удаляются в конце...

7
Molotoff
1 / 1 / 0
Регистрация: 21.07.2009
Сообщений: 50
22.02.2011, 08:57  [ТС] #2
ошибка вылетает вот такая:
0
Миниатюры
Удаление динамического массива  
-=ЮрА=-
Заблокирован
Автор FAQ
22.02.2011, 12:37 #3
В режиме отладки это обычное дело, у меня подобное с free() было, просто вбей
C++
1
2
3
#ifndef _DEBUG
delete [] A;
#endif
В дебаге чистки не будет а в релиз-версии всё будет ок!
0
Molotoff
1 / 1 / 0
Регистрация: 21.07.2009
Сообщений: 50
22.02.2011, 12:45  [ТС] #4
Юрий, а в самом коде delete [] A удалить?
0
-=ЮрА=-
Заблокирован
Автор FAQ
22.02.2011, 12:57 #5
Ну тогда не будет очистки памяти, хотя для массива из пары десятков элементов объём выделяемой памяти настолько ничтожен что на работе ОС это просто не отразиться...
0
Molotoff
1 / 1 / 0
Регистрация: 21.07.2009
Сообщений: 50
22.02.2011, 13:12  [ТС] #6
К сожалению этот метод не подошел, по прежнему вылетает эта же ошибка...
0
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
22.02.2011, 13:33 #7
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
В режиме отладки это обычное дело, у меня подобное с free() было, просто вбей
C++
1
2
3
#ifndef _DEBUG
delete [] A;
#endif
В дебаге чистки не будет а в релиз-версии всё будет ок!
Глупости-то зачем советовать?

Molotoff, ты уверен, что после
C++
1
2
3
4
5
while (A[i - 1] == s - 1)
{
    A[i - 1] = 0;
    i--;
}
в строке
C++
1
A[i-1]++;
ты не выходишь за пределы массива?
1
Molotoff
1 / 1 / 0
Регистрация: 21.07.2009
Сообщений: 50
22.02.2011, 14:20  [ТС] #8
Цитата Сообщение от rangerx Посмотреть сообщение
в строке
C++
1
A[i-1]++;
ты не выходишь за пределы массива?
все так, проблема крылась строго в индексах, т.е. нужно было просто проверять, не выходим ли за пределы:
C++
1
if (i>0) {A[i-1]++;}
всем спасибо за проявленное участие!
0
22.02.2011, 14:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2011, 14:20
Привет! Вот еще темы с ответами:

Удаление динамического массива - C++
Создаю динамический массив целых чисел. Хотелось бы после его создания научиться удалять его, то есть освобождать память. #include...

Удаление динамического одномерного массива - C++
Я в шоке оказывается надо еще удалять массив из памяти когда его создаешь. Всегда писал на шарпе таких проблем там не было а тут на тебе...

Удаление динамического массива в классе - C++
при удаление динамического массива в классе зависает программа... хотя в инете нашел кучу примеров, где написано точно также.... :cry: ...

Удаление динамического массива строк - C++
Здравствуйте! У меня проблема с удалением массива строк.Создал класс с полем - char** str; резервирую память(делаю это в конструкторе) ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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