ХЮ
Храпская Юлия

c++ динамический массив

как лучше выделить память под массив?
double **a=new double *[N];
for (int i=0; i=new double [N];
так, при миллион на миллион чисел, выкидывает из-за нехватки памяти

Оксана Пишонина
Оксана Пишонина

// code

#include
using namespace std;
int main() {
size_t rows, cols;
cout << "rows, cols?.. ";
cin >> rows >> cols;
double ** matrix = new (nothrow) double * [rows];
if (matrix) {
for (rsize_t row = 0; row < rows; row ++) {
matrix[row] = new (nothrow) double [cols];
if (!matrix[row]) {
for (rsize_t r = 0; r < row; r++)
delete[] matrix[r];
delete[] matrix;
matrix = NULL;
break;
}
}
if (matrix) {
cout << "Well!\n";
for (rsize_t row = 0; row < rows; row ++)
delete[] matrix[row];
delete[] matrix;
matrix = NULL;
} else {
cout << "Very badly!!\n";
}
} else {
cout << "Very badly!\n";
}
cout << "The end!\n";
cin.get(); cin.get();
return 0;
}

// результат в консоли



// диспетчер задач, файл подкачки

АС
Андрей Сергеев

дабл - 8 байт. Не всегда, конечно, но бывает.
миллион даблов - 8 миллионов байт = 8 МБ.
миллион раз по 8 МБ - 8 террабайт.

У тебя виртуальной памяти в компьютере точно не меньше 8 ТБ?

СП
Саша Петров

Я насчитал 29 терабайт для 32х (4 байта на указатель) и 58 терабайт для 64х (8 байт на указатель)
(4)8,000,000 х 8,000,000 / 1024 / 1024 / 1024 / 1024
Но тебе даже 2 гигабайта не позволят выделить

МЩ
Мария Щербинина

Что то неверно в постановке задачи. Миллион на миллион - это 10 в 12 степени! Даже по 4 байта это 4*10^12 байт =3,7 Тб. У вас не хватит памяти.

Сергей Артемьев
Сергей Артемьев

Выложи полностью условие. Памяти тебе не хватит, это правильно сказали, но мне сложно представить себе задачу, в которой реально понадобится такой массив (ведь даже если тебе хватит оперативной памяти, все равно на перебор всех элементов уйдет 10^12 операций с плавающей запятой, что на типичном домашнем компьютере займет порядка минуты (с использованием графического ускорителя, конечно, побыстрее) , а на алгоритм сложностью O(n^2) - 30 тысяч лет...

Похожие вопросы
динамический массив, delphi
Как задать динамический массив в языке C#
Тип указателя динамический массив FreePascal
как сделать динамическую картинку на языке C++?
Свойства у динамического pictureBox c#. Как создать динамический pictureBox с FixedSingle границами?
Вопрос по Visual C# и динамических массивах.
Как с помощью записать динамический массив
Как сконвертировать динамический массив в строку (string)? C#
Указатели динамического массива, функции, c++
Динамические массивы c++