comp.lang.c FAQ 列表·
问题 16.4
Q我有一个程序,它似乎运行正常,但在退出时崩溃了,是在 main() 中的最后一个语句之后。main()的最后一条语句之后。这可能是由什么原因引起的?
A至少有三件事需要检查:
- 如果在之前的声明中缺少分号,main可能会被意外地声明为返回一个结构体,这与运行时启动代码的期望相冲突。请参阅问题 2.18、10.9、11.12b 和 11.14a。
- 如果setbuf或setvbuf被调用,并且如果提供的缓冲区是自动的、局部变量的main(或任何函数),当 stdio 库尝试执行其最终清理时,该缓冲区可能已不存在。
- 由 ... 注册的清理函数atexit可能存在错误。也许它正在尝试引用局部于main或某个不再存在的其他函数的局部数据。
(第二个和第三个问题实际上与问题 7.5a 密切相关;另请参阅问题 11.16)。
参考文献:CT&P 第 5.3 节 pp. 72-3
关于此 FAQ 列表 关于 Eskimo 搜索 反馈 版权由
托管