报错信息:
Thread 1 received sianal SlGSEGy, seamentation faul
0x00007FF69F39807D 处有未经处理的异常(在 数据结构实验二.exe中): 堆栈 Cookie 检测代码检测到基于堆栈的缓冲区溢出。
devcpp中:
vs中:
特别气人的是:报错信息根本不清楚,devcpp中甚至报错位置都不对,在一开头创建栈的时候就崩溃了,我还以为语法有问题呢。
实际上:真正的错误在后头的栈的操作中,我一开始在s.top(即访问栈顶)前没有排除栈为空的情况(s.empty())。
所以在使用栈或队列及其他类似工具时,需要注意:
0. s.top()或q.front()前先排除s,empty()或q.empty()的情况,不然就会导致“栈溢出”
1. s.pop()前也是如此
类似的,对于链表,访问链表的值之前,先要排除其为空的情况(node == NULL)
希望对你有启发,也祝大家都可以避开这种报错信息莫名奇妙的错误(