Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Переполнение стека???


Автор: iPlay 9.2.2011, 22:49
Происходит переполнение стека, неясно почему???
Код

#define SIZE 200000
#define SIZECYCL 199999
#define DEVIATION 256    

int main(int argc, char* argv[])
{    
start:
    int pMap[SIZE];
    int randomVal[SIZE];
    int val = 0;
    int one = 1;
    int zero = 0;
    LARGE_INTEGER start, finish, freq;
    QueryPerformanceFrequency( &freq );

    srand(time(0));

    printf("-------------------------------\n");
    printf("must be less than 256"); printf("\n");
    printf("value = ");
    scanf("%d", &val);
    
    QueryPerformanceCounter( &start );    
//    int start = GetTickCount();

    for (long i = 0; i<=SIZECYCL; i++)
    {    
        //Sleep(1);
        randomVal[i] = rand() % DEVIATION;
        //printf("random value");
        //printf("%d",randomVal[i]);
        //printf("\n");
            if (val > randomVal[i])
            {
                pMap[i] = one;
                //printf("pMap["); printf("%d",i); printf("]=");            
                //printf("%d",pMap[i]);
            }
            else 
            {
                pMap[i] = zero;
                //printf("pMap["); printf("%d",i); printf("]=");    
                //printf("%d",pMap[i]);
            }
    }
    
    QueryPerformanceCounter( &finish );
    double time = (finish.QuadPart - start.QuadPart) / (double)freq.QuadPart;
    printf("\n%f", time); printf(" seconds");

    //int deadline = GetTickCount() - start;
    //printf ("\ntime=%d msec", deadline);
    
    long count = 0;
    //printf("\n\npMap = ");    
    for (long j = 0; j<=SIZECYCL; j++)
    {
        //printf("%d",pMap[j]);
        if ( pMap[j] == 1) 
        {
            count++;
        }
    }
    double p2tmp = (double)count/SIZE;
    double p2value = p2tmp * DEVIATION;
    printf("\n\nvalue was = ");
    printf("%f",p2value);
    printf("\n");
    return 0;
}



Добавлено через 7 минут и 10 секунд
При 
Код

#define SIZE 100000


работает на ура, но нужно 200 000  smile 

Автор: 586 9.2.2011, 23:21
Цитата(iPlay @  9.2.2011,  22:49 Найти цитируемый пост)
работает на ура, но нужно 200 000   smile 

Выделяй через new.

Автор: iPlay 9.2.2011, 23:34
Сейчас попробую.

Добавлено через 2 минуты и 47 секунд
Да, работает спасибо!

Добавлено через 3 минуты и 24 секунды
Интересно только почему именно так происходило?

Автор: 586 9.2.2011, 23:54
Цитата(iPlay @  9.2.2011,  23:34 Найти цитируемый пост)
Интересно только почему именно так происходило?

Размер стека ограничен. Настраивается в настройках компилятора.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)