CArray::Add() 神奇的访问冲突问题
测试代码大致如下——
- C/C++ code
class CTest{public: CTest(){}; virtual ~CTest(){};public: CString m_csID; CString m_csName;};CArray<CTest, CTest&> atest;CTest test;atest.Add(test);int nSize = atest.GetSize(); CArray<CTest, CTest&> atestMy;for (int i = 0; i < nSize; i++){ atestMy.Add(atest.GetAt(i));}这段代码没报错。但是假如把“CArray<CTest, CTest&> atestMy;”作为对话框类的成员,那么在执行“atestMy.Add(atest.GetAt(i));”的时候会报错,报错位置——
- C/C++ code
AFX_INLINE INT_PTR CArray<TYPE, ARG_TYPE>::Add(ARG_TYPE newElement){ INT_PTR nIndex = m_nSize; // 注意是这一句。注意,真的是这一句报的哦。。 SetAtGrow(nIndex, newElement); return nIndex; }报出“XXX.exe 中的0x0048f656 处未处理的异常: 0xC0000005: 读取位置 0x0000020c 时发生访问冲突”
求解,谢谢!
[解决办法]
恭喜LZ
[解决办法]
原来楼主是来散分的。
[解决办法]
lz要有耐心、细心
发帖时你会更仔细考虑提出的问题
很显然 错误0xC0000005 一般是访问了未初始化的指针