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

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

Войти
Регистрация
Восстановить пароль
 
АлексИванов
0 / 0 / 1
Регистрация: 08.11.2012
Сообщений: 72
#1

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

08.11.2012, 18:14. Просмотров 529. Ответов 10
Метки нет (Все метки)

Ребята, подскажите пожалуйста, необходимо создать двухмерный динамический массив.
Его размерность должна быть 10000000 на 10000000. Пробовал разобраться сам с этим, но как только ввожу данные больше 1000000 на 100, то среда Borland developer studio 2005, выдает ошибку "access violation in address 00402D67 in module Project.exe read of address 00000190"
Пробовал создавать массив статический 10000000 на 1000000 и ошибки так же вылазиют, другого рода правда, типа какой то стек переполнен.
Подскажите как мне всё таки использовать динамический массив, и создавать его максимально большим.
И подскажите на сколько он может быть большим.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2012, 18:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Двухмерный динамический массив (C++):

двухмерный динамический массив - C++
задание было такое: Найти количество отрицательных и положительных элементов массива. Массив в памяти разместить динамически (с...

Двухмерный динамический массив - C++
a=new int* for(int i=0;i<m;i++) a=new int; Вот создание двухмерного динамического массива.Начеркал небольшой рисунок с...

Двухмерный динамический массив - C++
Мне нужно создать 4 многомерных динамических массивов, размерность которых 10000000 10000000, и у меня не получалось их создавать на...

Динамический двухмерный массив - C++
Нужно сделать динамический двухмерный массив. 1. n столбиков и m строчек нужно задавать самому 2. массив должен записываться и...

Двухмерный динамический массив - C++
Создать двухмерный динамический массив, найти сумму значокь его элементов,вывести на экран,массив заполняется с клавиатуры.спасибо ...

Динамический двухмерный массив - C++
ИМХО директива include предназначена для включения документа в тело JSP НА ЭТАПЕ ТРАНСЛЯЦИИ JSP В СЕРВЛЕТ , а не во время выполнения ,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
08.11.2012, 18:25 #2
Цитата Сообщение от АлексИванов Посмотреть сообщение
И подскажите на сколько он может быть большим.
Размер ограничевается, только памятью вашего ПК.
0
АлексИванов
0 / 0 / 1
Регистрация: 08.11.2012
Сообщений: 72
08.11.2012, 18:33  [ТС] #3
И как это узнать?!
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
08.11.2012, 18:38 #4
Цитата Сообщение от АлексИванов Посмотреть сообщение
типа какой то стек переполнен.
Локальные переменные выделяются в стеке. Естественно он переполнится.
Динамические массивы выделяются в куче.
Выделение двумерного динамического массива int
C++
1
2
3
4
5
6
7
8
9
int** allocate(int w, int h){
  int** mas;
  int i;
  mas= new int*[w];
  mas[0]= new int[w*h];
  for(i=1; i<w; i++)
    mas[i]=mas[i-1]+h;
  return mas;
}
1
АлексИванов
0 / 0 / 1
Регистрация: 08.11.2012
Сообщений: 72
08.11.2012, 18:38  [ТС] #5
И как это узнать?!
И что подразумевается под памятью?!Более подробно растолкуйте пожалуйста.
То есть от среды программирования это не зависит?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
08.11.2012, 18:43 #6
Цитата Сообщение от АлексИванов Посмотреть сообщение
То есть от среды программирования это не зависит?
Я не уверен в ответе на этот вопрос. Возможно, что зависит. Я смутно помню, что в настройках некоторых сред программирования можно определить размер стека. Но зачем это делать?
0
АлексИванов
0 / 0 / 1
Регистрация: 08.11.2012
Сообщений: 72
08.11.2012, 18:51  [ТС] #7
поясните пожалуйста что такое allocate.
И как я могу это использовать,если мне нужно будет использовать 4 динамических массива 2 одинаковой размерности, а другие 2 разного, причем в них хранятся вещественные числа.

Добавлено через 6 минут
я вот так создавал :
C++
1
2
3
4
 double **yy1;
        yy1 = new double*[N]; 
    for(int k= 0; k < N; k++)
        yy1[k] = new double [M];
Это правильно?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
08.11.2012, 18:55 #8
allocate возвращает указатель на двумерный массив чисел int размера w на h
использовать так
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
#include <iostream>
using namespace std;
int** allocate(int w, int h){
  int** mas;
  int i;
  mas= new int*[w];
  mas[0]= new int[w*h];
  for(i=1; i<w; i++)
    mas[i]=mas[i-1]+h;
  return mas;
}
void destroy(int** array){
  delete[] array[0];
  delete[] array;
}
int main(){
  int m, n;
  int i, j;
  int** array;
  cout<<"Input 2 numbers (columns, rows):";
  cin>>m>>n;
  array=allocate(m, n);
  for (i=0; i<m; i++)
    for (j=0; j<n; j++)
    {
      cout<<"Input A("<<i<<", "<<j<<"):";
      cin>>array[i][j];
    }
  for (i=0; i<m; i++){
    for (j=0; j<n; j++)
    {
      cout<<array[i][j]<<", ";
    }
    cout<<endl;
  }
  return 0;
}
Добавлено через 32 секунды
Цитата Сообщение от АлексИванов Посмотреть сообщение
я вот так создавал :
double **yy1;
yy1 = new double*[N];
for(int k= 0; k < N; k++)
yy1[k] = new double [M];
Это правильно?
Абсолютно
1
АлексИванов
0 / 0 / 1
Регистрация: 08.11.2012
Сообщений: 72
08.11.2012, 19:05  [ТС] #9
for (i=0; i<m; i++)
for (j=0; j<n; j++)
{
cout<<"Input A("<<i<<", "<<j<<"):";
cin>>array[i][j];
}
for (i=0; i<m; i++){
for (j=0; j<n; j++)
{
cout<<array[i][j]<<", ";
}
cout<<endl;
}
return 0;
Для чего эти блоки циклов?!
Если я поменяю int на double то я так смогу его заполнить вещественными числами,

void destroy(int** array){
delete[] array[0];
delete[] array;
Это нужно для уничтожения массивов?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
08.11.2012, 19:08 #10
Цитата Сообщение от АлексИванов Посмотреть сообщение
Это нужно для уничтожения массивов?
Да, только я забыл его использовать в конце
C++
1
2
3
4
...
destroy(array);
return 0;
}
1
АлексИванов
0 / 0 / 1
Регистрация: 08.11.2012
Сообщений: 72
08.11.2012, 19:10  [ТС] #11
А предыдущие 4 цикла for для чего?!

Добавлено через 1 минуту
А предыдущие 4 цикла for для чего?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2012, 19:10
Привет! Вот еще темы с ответами:

Двухмерный динамический массив строк - C++
Всем привет) Помогите пожалуйста создать двумерный динамический массив строк, почитал Подбельского, вроде сделала всё как по учебнику, но...

Указатель на двухмерный динамический массив - C++
Друзья, нужна Ваша помощь! Создаю одномерный динамический, создаю указатель на него (вернее на его первый эл-т). То же самое пытаюсь...

Создать двухмерный динамический массив строк - C++
Ввести 2-мерный массив. Количество строк и столбцов заранее неизвестно. Признаком конца ввода строки - ввод указанной пользователем...

Динамический двухмерный массив (создать матрицу) - C++
Меня немного клинит, хочу уточнить. Задача заключается в том, чтобы создать двухмерный массив: матрицу размером 4 на 7 (4 строки, 7...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.11.2012, 19:10
Ответ Создать тему
Опции темы

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