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

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

Восстановить пароль Регистрация
 
WapxaZ
 Аватар для WapxaZ
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 4
28.04.2013, 20:21     Динамическое выделение памяти #1
Здравствуйте, у меня вопросик такой: почему при "динамическом выделении памяти в строку" у меня вылетает программа!? а при обычном выделении(в исходники закомментировал) работает корректно!? мож я не правильно обращаюсь к элементам массива!? В общем помогите разобраться

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
#include "stdafx.h"
#include <stdlib.h> // для доступа к srand
#include <time.h> // для доступа к time
#include <clocale>//вкл. рус. яз.
#include "mpi.h"
 
int _tmain(int argc, char* argv[])
{
    setlocale(0, "rus");
    int myid, size;
    MPI_Init(&argc, &argv);//инициализирую MPI
 
    MPI_Comm_rank(MPI_COMM_WORLD,&myid);//получаю номер текущего процесса
    MPI_Comm_size(MPI_COMM_WORLD, &size);//получаю кол-во процессов
    
    int i, j, n=10;//n-размерность матриц
 
    int **A=new int*[n];//динамически в строку
    A[0]=new int[n*n];
    for(i=1; i<n; i++)
        A[i]=A[0]+n*i;
        
    /*int **A;
    A=new int*[n];
    for(i=0; i<n; i++)
        A[i]=new int[n];*/
    time_t t; // текущее время - для инициализации генератора случайных чисел
    srand((unsigned) time(&t)); // инициализация генератора случ. чисел
    for(i=0; i<n; i++)//рандомно заполняю массив A
    {
        for(j=0; j<n; j++)
        {
            A[i][j]=rand()%2;
            printf("%d ", A[i][j]);
        }
        printf("\n");
    }
    //...
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2013, 20:21     Динамическое выделение памяти
Посмотрите здесь:

C++ Динамическое выделение памяти.
Динамическое выделение памяти C++
C++ динамическое выделение памяти
C++ Динамическое выделение памяти
C++ динамическое выделение памяти
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
28.04.2013, 20:38     Динамическое выделение памяти #2
А как вы его удаляете? Наверняка дело в этом, потому что я что-то не вижу здесь ничего неправильного.
WapxaZ
 Аватар для WapxaZ
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 4
28.04.2013, 20:49  [ТС]     Динамическое выделение памяти #3
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
А как вы его удаляете? Наверняка дело в этом, потому что я что-то не вижу здесь ничего неправильного.
Разве, отсутствие строк delete может быть причиной завершения проги, с всплывающим окошком(на скрине)!? В данном случае будет мусор в памяти, не так ли!?
Миниатюры
Динамическое выделение памяти  
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
28.04.2013, 21:42     Динамическое выделение памяти #4
В принципе может, если навыделять памяти слишком много, но не особождать её. Тогда следующая попытка выделения облажается и прибьёт программу (если специально не защититься).

Но проблема явно в не в приведённом куске кода. Ищите её в том, что скрыто за "// ..."
WapxaZ
 Аватар для WapxaZ
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 4
28.04.2013, 22:39  [ТС]     Динамическое выделение памяти #5
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
В принципе может, если навыделять памяти слишком много, но не особождать её. Тогда следующая попытка выделения облажается и прибьёт программу (если специально не защититься).

Но проблема явно в не в приведённом куске кода. Ищите её в том, что скрыто за "// ..."
Но ведь если выделить память другим способом, как в комментарии, то все работает хорошо... ,к сожалению, мне не подходит такой вариант.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
28.04.2013, 22:59     Динамическое выделение памяти #6
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Но проблема явно в не в приведённом куске кода.
Как это?
Цитата Сообщение от WapxaZ Посмотреть сообщение
A[0]=new int[n*n];
Цитата Сообщение от WapxaZ Посмотреть сообщение
A[i][j]=rand()%2;
Смотри эти строки.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
28.04.2013, 23:16     Динамическое выделение памяти #7
Цитата Сообщение от go Посмотреть сообщение
Смотри эти строки.
А как же эти?
C++
1
2
for(i=1; i<n; i++)
    A[i]=A[0]+n*i;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2013, 19:22     Динамическое выделение памяти
Еще ссылки по теме:

Динамическое выделение памяти C++
Динамическое выделение памяти C++
Динамическое выделение памяти C++

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

Или воспользуйтесь поиском по форуму:
WapxaZ
 Аватар для WapxaZ
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 4
29.04.2013, 19:22  [ТС]     Динамическое выделение памяти #8
C++
1
printf("Всем спасибо, тему можно закрывать.\n По неизвестной мне причине, после перезагрузки всё заработало ;)");
Yandex
Объявления
29.04.2013, 19:22     Динамическое выделение памяти
Ответ Создать тему
Опции темы

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