CListCtrl "Stack overflow"异常

saiyaman5 2012-03-06 11:25:09
不知道有没有人遇到过
CListCtrl无派生,与控件绑定,插入一些数据之后,用鼠标双击列表头中两列之间的空隙,列会自动调整列的宽度以适应数据的长度,这时会弹出 "0x5d17a6b3 处未处理的异常: 0xC00000FD: Stack overflow"的错误
光标会定位到 TYPE* pData = (TYPE*)CThreadLocalObject::GetData(&CreateObject); 这里,但只要点击继续,程序还可以运行下去。之后再双击列时就不会再有这样的错误了。

插入数据的多少都一样,去掉一些主要的风格还是一样,但一个程序中用了多个CListCtrl,只有少量不会有错误。
错误定位到下面这个类里。位于afxtls_.h文件

template<class TYPE>
class CThreadLocal : public CThreadLocalObject
{
// Attributes
public:
AFX_INLINE TYPE* GetData()
{
TYPE* pData = (TYPE*)CThreadLocalObject::GetData(&CreateObject);
ENSURE(pData != NULL);
return pData;
}
AFX_INLINE TYPE* GetDataNA()
{
TYPE* pData = (TYPE*)CThreadLocalObject::GetDataNA();
return pData;
}
AFX_INLINE operator TYPE*()
{
return GetData();
}
AFX_INLINE TYPE* operator->()
{
return GetData();
}

// Implementation
public:
static CNoTrackObject* AFXAPI CreateObject()
{ return new TYPE; }
};
...全文
112 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq45000 2012-03-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 saiyaman5 的回复:]
找到原因了,是因为界面线程的栈满了,有个dlg里分配了一个大数组,移到堆里就没事了。因为是别人写的程序,找了很久原因...
[/Quote]

请问楼主这个怎么移啊??
tubo_true 2012-03-06
  • 打赏
  • 举报
回复
了解了
saiyaman5 2012-03-06
  • 打赏
  • 举报
回复
找到原因了,是因为界面线程的栈满了,有个dlg里分配了一个大数组,移到堆里就没事了。因为是别人写的程序,找了很久原因...

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧