Я пишу программу, которая требует много памяти (анализ больших графов).
В настоящее время в моей программе есть две основные структуры данных (занимающие большую часть памяти).Это:
- * матрица * n типа
int **
- и массив длины n, типа
Node *
Узел, в этомcase, это структура, содержащая два целых числа (sizeof(Node)
= 8)
Самое большое значение для n, на котором я могу запустить свой код, - 22900, немного вычисляя, что я получаю:
22900*22900 * sizeof(int) * 8 + 22900 * sizeof(Node) = 16782591360 bits
Это 1,95375077 Гигабайт.
Итак, вопрос 1: правильно ли я вычисляю использование памяти для этих двух структур данных?и 2: есть ли ограничение в 2 ГБ на окнах.Если так, как я могу обойти это?
Для получения дополнительной информации я нахожусь на 64-битной машине Windows 7, компилирующей с GCC, 4 ГБ ОЗУ с ~ 3 ГБ свободной ОЗУ во время работы.
Спасибо.