了解这个错误,要先了解 EXE 内部调用的方式,要了解 堆栈 作用 ,
EXE内部调用使用伪代码来写应时:
暂存器 压栈
调用参数压栈
调用函数
函数内部申明动态的变量
也压栈
-------------
函数执行时,使用首地址-偏移量,得到了就是变量的地址,
函数执行完成时,栈首地址向下减,减到暂存器时,暂存器出栈,然后根据暂存器继续向后执行,就是函数的返回。
================
这个错误,也就是长时间运行,或程序出现重复调用时,造成 堆栈满掉了,然后程序继续压栈时,WINDOWS 检测到内存地址溢出,
保护性地停止程序运行。
如果是长时间运行出这个错误,那就只写 调试日志,然后检查 函数调用情况。
如果是短时间运行出这个错误,那就在IDE里,检查调用堆栈,看看是哪个函数之间出现 递归调用。
=============
一般来说,响应事件之时,修改控件属性,有可能造成重复的事件,然后导致隐性递归调用 ,这种情况是不经过调试,是很难发现,这个是属于逻辑错误。
以上就是我对这个错误的理解。