循环到5000多此出现如下状况
应该循环17000次
到了5000多次的时候
程序停止在
AFX_MODULE_STATE* AFXAPI AfxGetModuleState()
{
_AFX_THREAD_STATE* pState = _afxThreadState;
AFX_MODULE_STATE* pResult;
//////////////////////////////////////////////////
//下一个if判断为程序停止处,其中pState为0x00000832
//pState->m_pModuleState为CXX0030: Error: expression cannot be evaluated
if (pState->m_pModuleState != NULL)
{
// thread state's module state serves as override
pResult = pState->m_pModuleState;
}
else
{
// otherwise, use global app state
pResult = _afxBaseModuleState.GetData();
}
ASSERT(pResult != NULL);
return pResult;
}
请问为何?
修改程序,只循环5000次,那么运行结果是5000次的正确结果。
内存应该问题不大,new使用了不到20000次,共占用< 20000*16B
问题点数:0、回复次数:4Top
1 楼matiao(麻条)回复于 2003-12-04 23:25:09 得分 0
试一下增加线程的堆栈大小。默认只有1M,除了20000*16B外,它还需要额外的内存维护内存分配信息,以及代码等。Top
2 楼syl5005(syl5005)回复于 2003-12-04 23:29:19 得分 0
你的循环程序的代码贴出来看看。Top
3 楼AttachDotNet()回复于 2003-12-04 23:33:07 得分 0
发现执行了5590次之后,程序运算正确
可是返回时出错
是不是函数的入口被破坏?
猜测
那么如何维护堆栈呢?Top
4 楼cllr(寂寞2001)回复于 2003-12-05 01:25:48 得分 0
你的栈空间不够了,超过64K了Top




