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

Выделение памяти под массивы - C++

Восстановить пароль Регистрация
 
RayPas
 Аватар для RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 367
19.03.2014, 17:02     Выделение памяти под массивы #1
C++
1
2
3
4
5
6
7
int  **mas1 = new int*[q];
    for (int e = 0; e < q; e++)
    mas1[e] = new int[q];
 
    int  **mas2 = new int*[e];
    for (int q = 0; q < e; q++)
    mas2[q] = new int[e];
C++
1
2
3
4
5
6
7
for(int q = 0; e < q; e++)
    delete[] mas1[e];
    delete [] mas1;
 
    for(int e = 0; q < e; q++)
    delete[] mas2[q];
    delete [] mas2;
правильно ли я выделяю память под массивы?

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
int Matrica1(int **mas1) {
     int i,j;
 cout << "***********The First Matrix***********" << endl;
 for(i=0;i<q;i++)
 {
    for(j=0;j<e;j++)
    {
        mas1[i][j]=random(1,100);
        cout << mas1[i][j]<< endl;
    }
 }
 return 0;
}
 
int Matrica2(int **mas2) {
     int i,j;
 cout << "***********The Second Matrix***********" << endl;
 for(i=0;i<e;i++)
 {
    for(j=0;j<q;j++)
    {
        mas2[i][j]=random(1,100);
        cout << mas2[i][j] << endl;
    }
 }
 return 0;
}
т.е. я ввожу размерность, например 3 на 2; а вторая должна будет получиться - 2 на 3, чтобы правильно перемножилось(при таких размерностях результирующая должна выйти 2 на 2)...но ошибка в том, что прога вылетает на моменте перемножения....может с индексами что-то не так, помогите плиз
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2014, 17:02     Выделение памяти под массивы
Посмотрите здесь:

Выделение памяти под масссив C++
Выделение памяти под матрицу C++
Выделение памяти под строку C++
C++ Выделение памяти под структуры
Выделение памяти под массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kupnu4
26 / 26 / 9
Регистрация: 03.05.2013
Сообщений: 71
19.03.2014, 17:15     Выделение памяти под массивы #2
неправильно.

C++
1
2
3
4
5
6
7
    int  **mas1 = new int*[q];
    for (int i = 0; i < q; i++)
    mas1[i] = new int[e];
 
    int  **mas2 = new int*[e];
    for (int i = 0; i < e; i++)
    mas2[i] = new int[q];
RayPas
 Аватар для RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 367
19.03.2014, 18:22  [ТС]     Выделение памяти под массивы #3
kupnu4, а у даление памяти такое же?

Добавлено через 14 минут
всм по циклы i тоже?

Добавлено через 4 минуты
kupnu4, так то же почему то не работает, вылетает еще на генерации

Добавлено через 20 минут
и еще что заметил, вылетает все время только при генерации второй матрицы

Добавлено через 19 минут
хотя нет закомментил функцию генерирующую второй массив, так же вылетает и после генерации первого
kupnu4
26 / 26 / 9
Регистрация: 03.05.2013
Сообщений: 71
19.03.2014, 19:00     Выделение памяти под массивы #4
C++
1
2
3
4
5
6
7
    for(int i = 0; i < q; i++)
          delete[] mas1[i];
    delete [] mas1;
 
    for(int i = 0; i < e; i++)
         delete[] mas2[i];
    delete [] mas2;
освобождение памяти

Добавлено через 15 минут
проверил код, что прислал вам. он рабочий. может у вас переменные e и q не проинициализированы?
RayPas
 Аватар для RayPas
2 / 0 / 0
Регистрация: 18.01.2013
Сообщений: 367
19.03.2014, 21:42  [ТС]     Выделение памяти под массивы #5
kupnu4, заработало, кое-что еще там подправил, но смысл уловил, спасибо)
Yandex
Объявления
19.03.2014, 21:42     Выделение памяти под массивы
Ответ Создать тему
Опции темы

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