c++ - 神秘的c++段错误

标签 c++ g++ segmentation-fault

我是 C++ 的新手,在解决这个简单问题时遇到了一些困难。以下代码表现出一些奇怪的行为。我正在尝试将一堆数字打印到文本文件中,并记录需要多长时间。对于较小的 n (< 5000),代码运行但创建的文本文件是乱码。对于 n > 10000,程序崩溃并出现错误“段错误(核心已转储)”。

这是我的完整代码:

#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;
}

有人知道这个问题吗?

最佳答案

因为您想将整数和新行打印到文件中,而不是“添加”它们,这一行

resultsfile << i + "\n";

应该是

resultsfile << i << "\n";

下次,使用-g 选项编译您的程序并在gdb 中运行它。运行程序并收到段错误后,键入 backtrace,这样您就可以看到代码在哪里出错了。这样segmentation fault就不会那么神秘了。

关于c++ - 神秘的c++段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18688595/

相关文章:

c - 段错误的原因

c - 段错误扫描指向字符串的指针

c++ - 这个 "trick"跨 DLL 边界抛出异常是个坏主意吗?

c++ - 如何根据类型相关类型专门化 C++ 模板类函数?

python-2.7 - 这是 PyQt 4 python 错误还是行为错误的代码?

c++ - 为什么使用 fopen 打开流并使用读/写(而不是 fread/fwrite)执行 I/O

c++ - GDB 以无序的方式跳到错误的行

c++ - QT Creator 编译 C++ 文件?很简单的问题

c++ - 如何让同一个类的对象在同一个函数中做不同的事情?

C++ 3 个重载中没有一个可以转换所有参数类型第 39 行 1