Я новичок в C++ и испытываю некоторые трудности с этой простой проблемой. Следующий код демонстрирует странное поведение. Я пытаюсь напечатать кучу чисел в текстовый файл и время, сколько времени потребуется. Для меньшего n (< 5000) код запускается, но текстовый файл, который создается, является jibberish. При n> 10000 программа вылетает с ошибкой «segmentation fault (core dumped)».таинственная ошибка сегментации C++
Вот мой код в полном объеме:
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
using namespace std;
double listN(int n)
{
clock_t start = clock();
ofstream resultsfile;
resultsfile.open("Number.txt");
for (int i = 0; i < n; i++)
{
resultsfile << i + "\n";
}
resultsfile.close();
return (1000 * (clock() - start)/(double) CLOCKS_PER_SEC);
}
int main()
{
const int NUM_RUNS = 20;
double time = 0;
int n;
cout << "Enter the value n:";
cin >> n;
for (int i = 0; i < NUM_RUNS; i++)
{
time += listN(n);
}
cout << time/NUM_RUNS <<endl;
return 0;
}
Кто-нибудь есть идея, как к этой проблеме?
Magic! Работала отлично. Благодарю. Знаете ли вы, почему это дало разное поведение для малых и больших n? –
Я думаю, что вы печатали мусор внутри файла. Однако с небольшими значениями 'i',' i + "\ n" 'все еще указывали на место в памяти, где есть разрешения для чтения. –
Поиск в Интернете для «где хранятся строковые литералы». –