首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

CListCtrl "Stack overflow"错误

2012-03-31 
CListCtrl Stack overflow异常不知道有没有人遇到过CListCtrl无派生,与控件绑定,插入一些数据之后,用鼠

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

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

C/C++ code
template<class TYPE>class CThreadLocal : public CThreadLocalObject{// Attributespublic:    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();     }// Implementationpublic:    static CNoTrackObject* AFXAPI CreateObject()        { return new TYPE; }};


[解决办法]
了解了
[解决办法]
探讨
找到原因了,是因为界面线程的栈满了,有个dlg里分配了一个大数组,移到堆里就没事了。因为是别人写的程序,找了很久原因...

热点排行