【发布时间】:2009-03-19 19:13:44
【问题描述】:
我编写了一个 C 程序,在其中我做了一些相当繁重的堆栈分配,大约 2 MiB。由于我使用的是穷人的 IDE*,所以每次编译时,我都会通过 make 自动运行程序以对其进行测试。
我几乎把所有东西都打包好了,但由于某种原因,在最后的一些优化过程中,我直接从 shell 运行它。即时段错误!使用 make 运行它仍然有效,而手动运行它总是会产生相同的段错误。
我最终将我正在执行的堆栈分配量减少到 256 KiB,从而解决了这个问题。我的理由是 make 可能正在执行该进程,因此它继承了一些奇怪的参数,使其能够使用更多的堆栈空间。
虽然现在一切都很好,但我无法测试我的理论。任何人都可以确认或否认,或建议某种测试方式吗?
* zsh、vim、gcc、gdb 和一些疯狂的 makefile
【问题讨论】: