代码改变世界

stack around the variable was corrupted

2009-11-28 21:28  Iron  阅读(9605)  评论(0编辑  收藏  举报

        vs2008下c++数组如果越界会发生“stack around the variable was corrupted”诸如此类的错误,如果有朋友在debug时不慎发生此错误,请检查您代码中的数组,看看在使用时有没有越界。

        今天我在写oj评判模块的时候使用多线程评判时遇到一个怪问题,线程数大于12以上就会当掉,思来想去没有毛病,而且我的线程重量不是很大,所以还不至于程序栈区真的溢出,去网上看了看,发现数组越界有很大可能(还有一个原因是使用直接定义的变量太多,导致真的栈溢出,如果您的程序体积比较大,也可适当考虑一下这个原因,不过10M的默认栈区不是很容易达到的,一般还是数组越界问题),仔细查看之下,发现我在以前测试的时候启动的是10个线程,所以在存储线程ID和HANDLE时直接写了HANDLE threadHandles[10]类似的语句,而一旦启动较多的线程如20、70.。。。。便会发生栈区的错误,改成动态数组后,问题解决。