Ошибка сегментации в cpp в приведенной ниже программе
Я не могу найти правильную причину ошибки сегментации моей программы ,я также не знаю входных данных, в которых она получает ошибку сегментации, потому что я отправляю ее онлайн-судье.
Пожалуйста ,только вы, ребята, можете мне помочь, может быть, вы можете сказать об ошибке, увидев ее один раз.
Я новичок в программировании.Помоги мне...
Я пытался решить очень простую проблему https://www.spoj.com/problems/CANDY/
Это одна из самых решаемых проблем на spoj
Я получаю ошибку сегментации при отправке приведенного ниже решения.
Но в Visual Studio он работает нормально.
Я также объявил переменные, рассматривая размер (sum as long long int)
потому что он может быть большим
1) связано ли это с тем, что я объявляю массив внутри цикла while;
должен ли я объявить этот массив вне цикла while так, чтобы для каждого тестового случая он использовал один и тот же массив
2) является ли каждый раз, когда цикл запускается(для каждого тестового случая), создается новый массив, приведет ли он к сборке мусора или компилятор автоматически освободит память после каждого тестового случая (я знаю о динамическом распределении памяти в этом случае мы должны освободить память явно), можете ли вы сказать мне, в какой области я могу использовать этот массив?
следует ли объявлять переменные?
3)Если мы объявим свежий массив(ы) для каждой итерации цикла while, приведет ли он к мусору до тех пор, пока main не останется в стеке ?
Я получил выше сомнения, потому что ошибка сегментации связана с доступом к памяти.
Что я уже пробовал:
#include<iostream> using namespace std; int main(){ while(1){ int n; int arr[10001]; cin>>n; if(n==-1) break; long long int sum=0; for(int i=0;i<n;i++){ int temp; cin>>temp; sum+=temp; arr[i]=temp; } int mean=sum/n; if((sum%n)!=0){ cout<<-1<<endl; continue; } int count1=0; for(int i=0;i<n;i++){ if(arr[i]>mean){ count1+=(arr[i]-mean); } } cout<<count1<<endl; } }