通过注释堆栈语句来运行代码,它会产生正确的输出,但在声明堆栈时它会显示分段错误。请帮忙。
#include <iostream>
#include <stack>
#include <queue>
using namespace std;
int main()
{
int t;
char *expr;
stack < string > inp_stack;
// queue <int> op_queue;
cin >> t;
while (t--)
{
cin >> expr;
cout << expr << endl;
}
return 0;
}
答案 0 :(得分:1)
char *expr;
cin >> expr;
expr
是一个未初始化的(无效)指针,使用该指针会导致未定义的行为。
如果您想要从输入流中读取t
个字词,请改用std::string
对象:
int t = 0;
std::cin >> t;
std::string expr;
while (t > 0 && std::cin >> expr) {
std::cout << expr << std::endl;
}
答案 1 :(得分:0)
它因为您正在访问未初始化的指针而发生段错误。 expr
永远不会被初始化,因此您的程序一旦访问就会出现段错误。
您需要为expr
分配内存或将其更改为固定大小的数组。