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

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

Войти
Регистрация
Восстановить пароль
 
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
#1

Динамический массив - ошибка на 4-ой итерации - C++

10.11.2012, 20:44. Просмотров 311. Ответов 5
Метки нет (Все метки)

Подскажите новичку пожалуйста в чём проблема ? вылетает ошибка на 4-ой итерации
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
float **answers = new float*[1];
answers[0] = new float[31];
do
{
   numstep++;
   if (numstep == 1)
   {
      delete answers[0];
   }
   else
   {
      for(int i = 0; i < numstep - 1; i++)
        delete answers[i];
      delete answers;
   }
 
   float **answers = new float*[numstep];
      for(int i = 0; i < numstep; i++)
   answers[i] = new float[31];
 
   for(int i = 0; i < numstep; i++)
      for(int j = 0; j < 31; j++)
   answers[i][j] = 1;
}while(numstep < 10);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2012, 20:44     Динамический массив - ошибка на 4-ой итерации
Посмотрите здесь:

Динамический массив: ошибка в конструкторе - C++
Приветствую! Слушаю лекцию ТЕХНОПАРК, и там рассказывается про динамический массив с примером на C++ (есть 2 аналогичных видео: 1 вариант,...

Непонятная ошибка(классы и двумерный динамический массив) - C++
Всем привет. Сегодня писал программу для двумерного динамического массива. Должны меняться значения столбцов и строк, так, чтобы, например,...

Динамический массив. Ошибка при выполнении программы - C++
Программа должна предоставить заполнение массива пользователю, а дальше вывести массив на экран. (Массив динамический) При компиляции...

Ошибка при вводе в динамический двумерный массив - C++
заполнить матрицу не могу. ошибка где то от 19 до 24 строки. #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; #include...

Динамический массив структур. Ошибка преобразования типов - C++
Всем привет есть задачка на структуры. Нужно через структуру В сделать динамический массив структуры А. Написал функцию, но компилятор...

Ошибка при добавлении элемента в динамический массив - C++
Всем привет! Создал класс для работы с дин.массивом. Нормально компилируется и выводит массив, но когда добавляю новый элемент, выдает...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,733
10.11.2012, 20:53     Динамический массив - ошибка на 4-ой итерации #2
Цитата Сообщение от NEvOl Посмотреть сообщение
float **answers = new float*[1];
это глобальная

Цитата Сообщение от NEvOl Посмотреть сообщение
float **answers = new float*[numstep];
а это локальная
как ты с ними разбираешся????
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
10.11.2012, 20:56     Динамический массив - ошибка на 4-ой итерации #3
первое, что бросилось в глаза - вместо delete answers; delete answers[0]:
delete[] answers[0]; delete[] answers;

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
это глобальная а это локальная
как ты с ними разбираешся????
Точно! +1
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
10.11.2012, 21:01  [ТС]     Динамический массив - ошибка на 4-ой итерации #4
Цитата Сообщение от ValeryS Посмотреть сообщение
это глобальная


а это локальная
как ты с ними разбираешся????
а как тогда нужно указать ? а то что-то несовсем понимаю( нужно что бы оба создавались в цикле ?
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,733
10.11.2012, 21:11     Динамический массив - ошибка на 4-ой итерации #5
во первых вот здесь
Цитата Сообщение от NEvOl Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
if (numstep == 1)
 {
 delete answers[0];
 }
 else
 {
 for(int i = 0; i < numstep - 1; i++)
 delete answers[i];
 delete answers;
 }
перепиши
C++
1
2
3
4
5
6
7
8
9
10
if (numstep == 1)
   {
      delete[] answers[0];
   }
   else
   {
      for(int i = 0; i < numstep; i++)
        delete[] answers[i];
    }
     delete[] answers;
у тебя не удаляется блок answers[numstep-1]( до него цикл не доходит)
если numstep == 1 то не удаляется answers
ну и удалять нужно массив как сказал Kuzia domovenok,
я бы написал так

C++
1
2
3
 for(int i = 0; i < numstep; i++)
        delete[] answers[i];
    delete[] answers;
во вторых вместо этого

Цитата Сообщение от NEvOl Посмотреть сообщение
float **answers = new float*[numstep];
напиши
C++
1
 answers = new float*[numstep];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2012, 21:12     Динамический массив - ошибка на 4-ой итерации
Еще ссылки по теме:

Динамический массив указателей(не пойму в чем ошибка в коде) - C++
есть код: При попытки записи данных слетает на инициализации name..не могу понять,или память неправильно объявляю,или что другое... ...

Программа которая изменяет динамический массив строк - Написал, но есть ошибка - C++
Всем доброго времени суток. В общем сделал программу, которая вкратце делает следующее: 1) Создает динамических массив строк char **m ...

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

динамический массив - C++
int *f = new int(); ... delete f;//вот здесь прерывается Почему прерывается ?


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

Или воспользуйтесь поиском по форуму:
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
10.11.2012, 21:12  [ТС]     Динамический массив - ошибка на 4-ой итерации #6
спасибо попробую
Yandex
Объявления
10.11.2012, 21:12     Динамический массив - ошибка на 4-ой итерации
Ответ Создать тему
Опции темы

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