2015-03-20 3 views
-1

Следующий код является частью моей определенной пользователем функции в с«Аварийное завершение программы» отображается на выполнение программы гр

void genprime(long int m,long int n) 
{ 

    long int j,k,p[10000]={0},c,c1,c2,r; 

    int flag=0; 
} 

Функция содержит логику для создания primes.I объявлены все переменные типа как long int, поскольку это было необходимо для большого диапазона. Я получаю аномальное сообщение о завершении программы при выполнении. И когда я объявляю все как int, он печатает значения, но только для определенного диапазона. Пожалуйста, помогите, чтобы это можно было решить. Спасибо заранее

+0

Код, который вы показываете, не может быть поврежден, используйте отладчик, чтобы узнать, где произошел сбой. –

+1

10000 длинных ints на 64-битной машине составляет 80k. Это не так много памяти в целом, но это может быть больше, чем то, что доступно для распределения стека. Переместите 'p' в статику или выделите ее с помощью' malloc() ', и это приведет к созданию более разумного размера стека. –

ответ

0

Попробуйте выделить память в куче, long * p = malloc (10000 * sizeof (long));

 Смежные вопросы

  • Нет связанных вопросов^_^