为什么程序崩溃
Why is the program crashing?
我正在制作一个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>
。
我建议将其更改为以下内容。尽管会指出,如果N<data.txt中的项目数。
while (iii < N && inputFile.good())
{
inputFile >> *(arr+iii);
++iii;
}
int *arrRev = reverseArray(arr, N);
for(int jjj = 0; jjj < N; ++jjj)
{
cout << (*(arrRev+jjj)) << endl;
}
delete [] arr;
delete [] arrRev;
inputFile.close();
相关文章:
- 提升 ASIO Async_receive崩溃程序
- 类指针方法崩溃程序
- get_body来自 IHTMLDocument2 崩溃程序
- 是否有可能存在不会崩溃程序的内存问题
- 调试运行时出现奇怪的崩溃程序(Eclipse C++)
- 儿童对话框 - setWindowTexta或sendmessagea崩溃程序-MFC
- 顶点阵列GLFW崩溃C 程序
- 将值分配给Float数据类型崩溃程序
- OpenCV-将变量添加到类成员崩溃程序
- boost::interprocess::managed_shared_memory 崩溃程序
- 将枚举值分配给整数崩溃程序
- SDL 1.2 -> SDL 2.0(崩溃程序)
- 空析构函数崩溃程序:C++
- 冒泡排序崩溃程序c++
- Ofstream关闭崩溃程序
- 删除字符* 崩溃程序
- c++矢量擦除崩溃程序
- Lua_getglobal崩溃程序
- 通过Copy Constructor创建的e2打印崩溃程序
- RNG崩溃c++程序