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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 63, средняя оценка - 4.60
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
#1

Динамический трёхмерный массив - C++

01.10.2009, 16:01. Просмотров 7905. Ответов 4
Метки нет (Все метки)

Товарищи, помогите найти ошибку.

Создаю 3х мерный динамический массив:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int z;
    cout<<"Input y\n";
    cin>>y;
    cout<<"\nInput x\n";
    cin>>x;
    cout<<"\nInput z\n";
    cin>>z;
 
    
    int ***p=new int **[y];
    for (int i=0;i<y;i++)
    {
        p[y]=new int *[x];
    }
    for (int i=0;i<y;i++)
    {
        for (int j=0;j<x;j++)
        {
            p[i][j]=new int [z];
        }
    }
Но на шаге p[i][j]=new int [z]; стопорится, и выдаёт ошибку:
Unhandled exception at 0x00414292 in 09_09_27.exe: 0xC0000005: Access violation writing location 0xcdcdcdcd.
Хотя такое только при запуске, при билде этого не выявляет: Build: 0 succeeded, 0 failed.

Посоветуйте, как выйти из ситуации.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2009, 16:01     Динамический трёхмерный массив
Посмотрите здесь:

Можно ли в классе создавать массив переменной длинны. Например динамический массив? C++
Массив: передать динамический массив в функцию и записать в каждый элемент строку из файла C++
динамический массив (Целое число разложить на массив простых множителей) C++
Динамический трёхмерный массив (создать) C++
Создать динамический массив (Если чётных чисел больше, то массив должен быть укорочен на 2 элемента) C++
Написать функцию принимающую массив и возвращающую указатель на динамический массив C++
C++ Переделать динамический массив на статический массив
Двумерный массив (поменять статический массив на динамический) C++
Заполнить динамический массив из файла и записать массив обратно в файл C++
C++ Массив и память. Как создать динамический массив?
C++ Трёхмерный динамический массив
C++ Трёхмерный массив в Функцию

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
01.10.2009, 16:05     Динамический трёхмерный массив #2
может имеет смысл написать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
       int ***p=new int **[y];
        for (int i=0;i<y;i++)
        {
                *p[y]=new int *[x];
        }
        for (int i=0;i<y;i++)
        {
                for (int j=0;j<x;j++)
                {
                        p[i][j]=new int [z];
                }
        }
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
01.10.2009, 16:16  [ТС]     Динамический трёхмерный массив #3
в таком случае 1 фэйл
error C2440: '=' : cannot convert from 'int **' to 'int *'
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
01.10.2009, 16:23     Динамический трёхмерный массив #4
вот без ошибок.
C++
1
2
3
4
5
6
7
    int ***p=new int **[y];
    for (int i=0;i<y;i++)
    {
        p[i]=new int *[x];
        for (int j=0;j<x;j++)
            p[i][j]=new int [z];
    }
твоя ошибка в невнимательности
for (int i=0;i<y;i++)
p[y]=new int *[x];
найди ошибку
delias
4 / 4 / 0
Регистрация: 16.07.2009
Сообщений: 87
01.10.2009, 19:21  [ТС]     Динамический трёхмерный массив #5
аяяй, спасибо большое.
действительно, очень часто я бываю очень невнимателен.
надо книжку что-ли какую прочитать по этому поводу
Yandex
Объявления
01.10.2009, 19:21     Динамический трёхмерный массив
Ответ Создать тему
Опции темы

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