Хорошо, так что в основном это моя программа, которая читает текстовый файл и помещает его внутри массива, в конце концов я распечатал все в этом массиве. Программа работает нормально и дает правильный результат несколько дней. Однако он просто прекратил работать сегодня. Например, текстовый файл
88
687
472
671
Но по завершении программы выход равен 0 1073741824 0 1073741824. Я не знаю, что происходит, и единственный раз, когда я внес некоторые изменения в bash, был ulimit -s неограничен. Есть идеи?
int main(int argc, char *argv[])
{
ifstream file(argv[1]);
int placeholder;
int size = pow(2,atoi(argv[2]));
int array[size];
int index = 0;
while (file >> placeholder)
{
array[index]=placeholder;
index++;
}
for(int i = 0; i<size; i++)
{
cout<<array[i]<<endl;
}
return 0;
}
Вы уверены, что ваш текстовый файл доступен для чтения программой? Если входной файл не существует, программа все равно попытается напечатать argv[2]**2
записи из array
которые не содержат никаких элементов! Программа заканчивается сбросом значений мусора.
Я также не уверен, почему вы делаете вызов pow
- почему бы не получить количество элементов из argv[2]
?
Кроме того, можно использовать некоторые функции (гр atoi
), когда вы могли бы использовать C++ stringstream
сделать преобразование.
Когда я запускаю ваш код с ./a.out file.txt 2
: ./a.out file.txt 2
, он печатает 4 числа, как ожидалось. Когда я делаю это вместо: ./a.out does_not_exist.txt 2
, он печатает 4 значения мусора и выгружает их на экран.