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

Не создается динамический двумерный массив - C++

Восстановить пароль Регистрация
 
intern
 Аватар для intern
15 / 15 / 6
Регистрация: 30.03.2014
Сообщений: 67
Завершенные тесты: 1
06.06.2014, 00:57     Не создается динамический двумерный массив #1
После компиляции приложение запускается с ошибкой:
Process returned -1073741819 (0xC0000005)
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
void create_array (int **arr, int M, int N)
{
    arr = new int* [M];
    for (int i=0; i!=M; ++i)
    {
        arr[i] = new int [N];
    }
}
 
void delete_array (int **arr, int M)
{
    for (int i=0; i!=M; ++i)
    {
        delete [] arr[i];
    }
    delete [] arr;
}
 
int main ()
{
    const int M = 5;
    const int N = 5;
    int **arr;
 
    create_array (arr, M, N);
    delete_array (arr, M);
 
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2014, 00:57     Не создается динамический двумерный массив
Посмотрите здесь:

C++ Динамический двумерный массив
Динамический двумерный массив C++
C++ Двумерный динамический массив
C++ Динамический двумерный массив
C++ динамический двумерный массив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.06.2014, 01:14     Не создается динамический двумерный массив #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от intern Посмотреть сообщение
После компиляции приложение запускается с ошибкой:
Потому что указатель по значению передаёте в функцию create_array().

Добавлено через 10 минут
C++
1
2
3
4
5
6
7
8
void create_array (int **&arr, int M, int N)
{
    arr = new int* [M];
    for (int i=0; i!=M; ++i)
    {
        arr[i] = new int [N];
    }
}
intern
 Аватар для intern
15 / 15 / 6
Регистрация: 30.03.2014
Сообщений: 67
Завершенные тесты: 1
06.06.2014, 11:39  [ТС]     Не создается динамический двумерный массив #3
А почему тогда работают оба варианта для fill_array(arr, M, N):
C++
1
2
3
4
5
6
7
8
9
10
11
12
void fill_array (int **arr, int M, int N)
{
    srand (time(NULL));
    for (int i=0; i!=M; ++i)
    {
        for (int j=0; j!=N; ++j)
        {
            arr[i][j] = rand()%90+10;
        }
 
    }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
void fill_array (int **&arr, int M, int N)
{
    srand (time(NULL));
    for (int i=0; i!=M; ++i)
    {
        for (int j=0; j!=N; ++j)
        {
            arr[i][j] = rand()%90+10;
        }
 
    }
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.06.2014, 13:23     Не создается динамический двумерный массив #4
Цитата Сообщение от intern Посмотреть сообщение
А почему тогда работают оба варианта для fill_array(arr, M, N):
Потому, что там не меняется значение самого указателя arr (как в create_array(): arr = new int* [M]).
Yandex
Объявления
06.06.2014, 13:23     Не создается динамический двумерный массив
Ответ Создать тему
Опции темы

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