c++ - 为什么程序会崩溃?

标签 c++ crash

我正在制作一个 C++ 程序,它应该从标准输入中读入一个整数 N。然后它应该从文件“data.txt”中读取值到一个大小为 N 的数组中。然后它应该将它传递给一个反转的函数数组并返回指向新数组的指针。然后它应该打印返回的指针数组的内容。但是每次我运行程序时它都会崩溃。有什么想法吗?

#include <iostream>
#include <fstream>

using namespace std;

int * reverseArray(int * arr, const int size)
{
//int arr1[size];
int *arr2 = new int[size];
for(int iii = 0; iii < size; iii++)
{
    (*(arr2+iii)) = (*(arr + size - 1 - iii));
}

return arr2;
}

int main()
{
int N;
cin >> N;
if(N >= 0 && N <= 50)
{
    ifstream inputFile;
    inputFile.open("data.txt");
    int *arr = new int[N];
    int iii = 0;
    while(inputFile >> (*(arr+iii)) && iii < N)
    {    iii++;}

    arr = reverseArray(arr, N);

    for(int jjj = 0; jjj < N; jjj++)
    {
        cout << (*(arr+jjj)) << endl;
    }

    delete [] arr;
    inputFile.close();
}

return 0;
}

最佳答案

我觉得问题出在这里:

while(inputFile >> (*(arr+iii)) && iii < N)

检查确保iii小于 N访问后发生。重新排序条件:

while(iii < N && inputFile >> (*(arr+iii)) )

注意这一行引入了内存泄漏:

arr = reverseArray(arr, N);

因为这是 C++,考虑使用 std::vector<int>相反。

关于c++ - 为什么程序会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9467862/

相关文章:

C++: atof() 有错误的行为

c# - 应用程序在 VS2012 Ultimate 之外运行 5-15 秒后崩溃

c++ - 使用迭代器插入到 vector 中

c++ - 多线程和使用事件

c++ - 返工 make 文件以将 obj 放入不同的位置

ios - 应用程序在启动时崩溃 Apple 拒绝

Node.js 崩溃了!语法错误 : Unexpected token ILLEGAL

c++ - 使用反向remove_if删除字符串

ios - 如何修复 CFNetwork iOS swift 问题?

javascript - IE8 在隐藏与行跨度相交的表列时崩溃