我有这段代码工作得很好。在if
中的声明是真实的,这导致我打印TRUE
。但是,当我删除else
声明的内容时,即使它未执行(仍打印TRUE
),这也会导致我出现分段错误。能否执行代码导致分段错误?
有没有人知道为什么会这样?
if(parser->checkToken(Token::Type::Int)) {
std::cout << "TRUE" << std::endl;
parser->scanner->getToken().getNumber();
parser->advance();
} else {
std::cout << "FALSE" << std::endl;
parser->requireToken(Token::Type::String);
}
p.s.解析器是unique_ptr
什么行导致段错误? –
听起来像_undefined behavior_。 –
请参阅:[什么是分段错误?](https://stackoverflow.com/questions/2346806/what-is-a-segmentation-fault)和[什么是未定义行为?](https://stackoverflow.com/questions/2397984/undefined-unspecified-and-implementation-defined-behavior) –