CListCtrl "Stack overflow"异常
不知道有没有人遇到过
CListCtrl无派生,与控件绑定,插入一些数据之后,用鼠标双击列表头中两列之间的空隙,列会自动调整列的宽度以适应数据的长度,这时会弹出 "0x5d17a6b3 处未处理的异常: 0xC00000FD: Stack overflow"的错误
光标会定位到 TYPE* pData = (TYPE*)CThreadLocalObject::GetData(&CreateObject); 这里,但只要点击继续,程序还可以运行下去。之后再双击列时就不会再有这样的错误了。
插入数据的多少都一样,去掉一些主要的风格还是一样,但一个程序中用了多个CListCtrl,只有少量不会有错误。
错误定位到下面这个类里。位于afxtls_.h文件
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; }};