Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2010, 22:43   #1
LOST94
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 47
По умолчанию ограничения на размер массива?

КОД:
Код:
#include <stdio.h>

int main() {
   freopen("input.txt","r",stdin);
   freopen("output.txt","w",stdout);
   int w,n,a[1000000],b[1000000],xt=0,yt=0,x=0,y=0;
   scanf("%d %d",&w,&n);
   for(int i=0;i<n;i++) scanf("%d%d",&a[i],&b[i]);
    for(int k=0;k<n;k++){
            if((a[k]+xt)>w) {
                          y+=yt; yt=0;
                          if(xt>x) x=xt;
                          xt=0;}
            else {
                 xt+=a[k];
                 if(b[k]>yt) yt=b[k];}}
    if(xt>x) x=xt;
    y+=yt;
    printf("%d %d",x,y);                           
    return 0;}
мне надо чтоб элементы массива были по миллиону, но в этом случае делает ошибку, а когда берешь их например по 100000 то все делает нормально. Есть ли какое ограничение на это дело в с++, или у меня просто такой компилятор?

Последний раз редактировалось MaTBeu; 28.03.2010 в 23:26.
LOST94 вне форума Ответить с цитированием
Старый 28.03.2010, 22:58   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

да, размер массива в байтах, по идее, не должен превышать 64 килобайта. А вообще читайте документацию к вашему компилятору.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 28.03.2010, 23:14   #3
LOST94
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 47
По умолчанию

но когда у меня 100 000 было это же 400 кб.
у меня прост наверно нестандартный компилятор , dev-c++
попробуйте у кого борландский или от микрософта есть
LOST94 вне форума Ответить с цитированием
Старый 29.03.2010, 00:22   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Раньше размер массива, а вернее размер всех переменных должен был укладываться в размер стека, который задаётся в параметрах компилятора. Однако, последнии борланды на это внимание не обращают и дают сразу 2 Гб.
eoln вне форума Ответить с цитированием
Старый 29.03.2010, 09:50   #5
yugik
Пользователь
 
Аватар для yugik
 
Регистрация: 04.01.2010
Сообщений: 23
По умолчанию

Так как переменные создаються в стэековой памяти, то ограничения идут именно оттуда. Если не ошибаюсь стек виндой выделяеться в размере 1Мб. У меня на Visual Studio 2008 правда дает создание массива array [100000000] до 8 нулей, при этом компилиться нормально. А вообще создавай массив в динамической памяти там размер ограничен только твоей оперативной памятью.

int *arr = new int [100000];
yugik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размер массива huzik Общие вопросы C/C++ 10 15.10.2009 18:15
Как изменить размер массива? mavlon_m Общие вопросы Delphi 8 04.08.2009 16:18
Переменный размер массива Эйнж Общие вопросы C/C++ 14 27.03.2009 17:17
размер массива nosuchathing Общие вопросы C/C++ 6 15.01.2009 11:40
Размер массива в Delphi simple_Pro Помощь студентам 2 11.05.2008 09:15