Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
1

Динамически создаваемый масссив, ошибка времени исполнения

15.06.2015, 20:27. Показов 1062. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Попытался создать двумерный массив. Неудачно. Падает и не могу понять причину.

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
#include <iostream>
 
using namespace std;
 
class MyArrayClass{
    unsigned **Arr;     //Массив
    unsigned Row,Col;
public:
 
     ~MyArrayClass(){
           for (unsigned i=0;i<Col;i++) delete []Arr[i];  //Освобождаю память
           delete Arr;
    }
 
   void  Create();
   void  Fill();
   void  Show();
   void  Init(const unsigned, const unsigned);
};
 
void MyArrayClass::Create(){
    Arr = new unsigned * [Row];
    for (unsigned i=0;i<Col;i++) Arr[i] = new unsigned[Col];
}
 
void MyArrayClass::Fill(){
    unsigned count=10;
    for (unsigned i=0;i<Row;i++){
        for (unsigned j=0;j<Col;j++){
            Arr[i][j] = count++;
        }
    }
}
 
void MyArrayClass::Show(){
    for (unsigned i=0;i<Row;i++){
        for (unsigned j=0;j<Col;j++){
            cout<<"|"<<Arr[i][j]<<"|";
        }   cout<<"\n";
    }
}
 
void MyArrayClass::Init(const unsigned N, const unsigned M){
    Row = N; Col=M;
    Create();  //Выделяю память как под двумерный массив
    Fill();    //Заполняю данными
    Show();    //Показываю на экран
}
 
 
int main()
{
 
MyArrayClass Arr;
Arr.Init(8,7);   //Создать массив 8 на 7
/*
Arr.~MyArrayClass();  //Освободить память
Arr.Init(..) //Создать с новыми размерами
*/
 
}
Как это? Та проблема, что я увидел начинается в методе Fill. Я якобы пытаюсь записать данные в защищенную область памяти, но **Arr не константа (Во всяком случае объявлен как не константа). А перед вызовом Fill, выполняется выделение памяти по аналогии с двумерным массивом. Т.е. все выглядит как запись должна происходит в ячейку выделенную new, где эта ячейка доступна для изменений.

Вот и понять не получается, что вообще происходит.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2015, 20:27
Ответы с готовыми решениями:

Ошибка времени исполнения
Доброго времени суток! Опираясь на...

Ошибка времени исполнения
Помогите разобраться с ошибкой. Проблема только в функции create_file. Почему-то когда запускается...

Выскакивают предупреждения и ошибка времени исполнения. Си
Задача кода , проверить является ли массив пирамидой.Ограничение по времени 2 сек. По памяти 64...

Динамически создаваемый объект.
Как обрящаться из других методов к динамически созданным объектам, в данном случае к TextBox ...

4
Просто Лис
Эксперт Python
5731 / 3530 / 1055
Регистрация: 17.05.2012
Сообщений: 10,360
Записей в блоге: 9
15.06.2015, 20:34 2
Лучший ответ Сообщение было отмечено daslex как решение

Решение

Цитата Сообщение от daslex Посмотреть сообщение
C++
1
2
Arr = new unsigned * [Row];
for (unsigned i=0;i<Col;i++)
Создаёте массив указателей из Row элементов, а в цикле только Col.
1
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
15.06.2015, 20:36 3
C++
1
2
3
4
5
6
7
void MyArrayClass::Create(){
    Arr = new unsigned * [Row];
    for (unsigned i=0;i<Row;i++)
    {
        Arr[i] = new unsigned[Col];
    }
}
1
daslex
15.06.2015, 20:38  [ТС]
  #4

Не по теме:

спс. слона-то я и не приметил..

0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
15.06.2015, 22:46 5
C++
12
delete [] Arr;
1
15.06.2015, 22:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2015, 22:46
Помогаю со студенческими работами здесь

Динамически создаваемый фрейм
Подскажите, что я не так сделал. Я создаю вкладку и в эту же вкладку хочу вставлять фрейм....

Запись в динамически создаваемый файл
Здравствуйте. проблема такая: я создаю файл и хочу записать в него текст из др. файла:...

динамически создаваемый стринггрид + многострочность
Всем добрый денек! Динамически создаю на форме несколько pagecontrol, на каждом свой Stringgrid....

Динамически создаваемый массив Combobox
Здравствуйте! Мне тут в программке надо принажатии кнопки создавать несколько Combobox'ов, сколько...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru