一个关于stack underflow的问题

alixnuaa 2005-07-27 03:41:52
underflow----堆栈下溢
在用MSC编程时运行程序后一段时间后出现stack underflow的问题,看到一篇文章说是对应堆栈操作pop太多了导致了堆栈下溢,请问什么是pop操作,各位有遇到这样的问题吗?堆栈错误一般会出现在什么地方?函数的调用吗?
...全文
1292 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
trackant 2005-07-31
  • 打赏
  • 举报
回复
也许出错的代码部分根本就与stack挨不着边,只是系统代码用到栈而已...
试试逐次隔离一部分代码的方法,这样可以快一些定位出错位置。
jixingzhong 2005-07-28
  • 打赏
  • 举报
回复
可以在堆栈的底部设置一个标志


每次 POP 的时候


检查指针是否在标志范围以内...
alixnuaa 2005-07-27
  • 打赏
  • 举报
回复
没有支持Debug命令,
to:junguo(junguo)
有一些函数用到了指针,用来指向地址,比如说:
int peek(unsigned long ramseg, unsigned long offset)
{
int _far *p;
int k;

unsigned long addr,ramseg1;
ramseg1 = ramseg;
addr = ramseg1 + offset;
p = (int _far *)addr;
k = *p;
return k;
}
我这样用的话应该都已经确定了地址再用的,
pcboyxhy 2005-07-27
  • 打赏
  • 举报
回复
debug一下看看
junguo 2005-07-27
  • 打赏
  • 举报
回复
检查你的指针使用中,有没有没分配就进行操作的情形,或者是指向不明区域的问题!
alixnuaa 2005-07-27
  • 打赏
  • 举报
回复
怎么调试呢?这样的问题很不好找啊
oo 2005-07-27
  • 打赏
  • 举报
回复
pop就是从堆栈里取数据。
你往堆栈里放了3个数据,但要取4次,第4次取时堆栈里没数据了,就出错了。

如果你不是自己写汇编的话,一般是因为指令指针被你的程序错误修改(指针/数组越界覆盖了堆栈里的内容等原因)了的缘故。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧