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

Программа при исполнении выдает ошибку и прерывается! (2-мерный динамический массив) - C++

Восстановить пароль Регистрация
 
ilizard
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 50
03.12.2012, 03:23     Программа при исполнении выдает ошибку и прерывается! (2-мерный динамический массив) #1
Помогите пожалуйста! Задали написать программку, я ее написала, и только в одном фрагменте "зависла". Для начала надо задать 2-мерный динамический массив и заполнить его случайными числами. Я все делаю, но когда запускаю, после того как выведено 2 строки программа замирает и вырубается. В чем причина? Неправильно выделена память? Объясните...
Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
int main() {
    srand (time(NULL)) ;
    int n,m,i,j;
    
    cout << "n" << '\n';  cin >> n;
    cout << "m" << '\n';  cin >> m;
    int **arr = (int**) malloc(n*sizeof(int));    //задаю массив указателей
    for (i=0;i<n;i++) {
        *arr=(int*)malloc(m*sizeof(int));}         // выделяю построчно память для элементов строк
        
    for (i=0;i<n;i++)                                     // вывожу массив
    {
        for (j=0;j<m;j++) { arr[i][j]=rand()%100; cout<< arr[i][j] << "   ";}   //заполняю элемент числом и вывожу
        cout<< '\n' ;}                                   //  переход на след строчку
       
 free (arr);       
    getch ();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2012, 03:23     Программа при исполнении выдает ошибку и прерывается! (2-мерный динамический массив)
Посмотрите здесь:

memcpy/CopyMemory + 2-мерный динамический массив C++
C++ динамический 2-х мерный массив
не могу сделать 3-х мерный динамический массив C++
C++ программа выдает ошибку при компиляции
C++ Пяти мерный динамический массив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.12.2012, 04:40     Программа при исполнении выдает ошибку и прерывается! (2-мерный динамический массив) #2
C++
1
2
3
4
5
6
7
8
9
10
11
...
int **arr = (int**)malloc(n * sizeof(int*)); 
for (i = 0; i < n; i++) 
     arr[i] = (int*)malloc(m * sizeof(int)); 
 
...
for (i = 0; i < n; i++)
     free(arr[i]);
 
free (arr); 
...
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
03.12.2012, 04:43     Программа при исполнении выдает ошибку и прерывается! (2-мерный динамический массив) #3
ой не то
собственно уже ответ дан.
ilizard
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 50
03.12.2012, 14:22  [ТС]     Программа при исполнении выдает ошибку и прерывается! (2-мерный динамический массив) #4
А не могли бы объяснить, зачем так делать?

Добавлено через 6 минут
И программа также вылетает
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
03.12.2012, 14:28     Программа при исполнении выдает ошибку и прерывается! (2-мерный динамический массив) #5
всё должно быть норм. ты что-то невнимательно исправил. Ты точно заменил строки 11, 12, 13, 19, 19
у себя на строки 2,3,4,7,8 у alsav22 соответственно
ilizard
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 50
03.12.2012, 14:39  [ТС]     Программа при исполнении выдает ошибку и прерывается! (2-мерный динамический массив) #6
Ой, точно. Все, спасибо большое, заработало!)
Yandex
Объявления
03.12.2012, 14:39     Программа при исполнении выдает ошибку и прерывается! (2-мерный динамический массив)
Ответ Создать тему
Опции темы

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