ASSERT(m_pchData != NULL)错误

时间:2023-02-03 19:46:08
_AFX_INLINE   CStringData*   CString::GetData()   const  
{   ASSERT(m_pchData   !=   NULL);   return   ((CStringData*)m_pchData)-1;   }  
不知道哪里错了,会出现这个错误。

当我在Dlg类中添加变量int nHeight1;int nWidth1;时程序一切正常没有问题,然后在添加变量int nHeight2;int nWidth2;,程序可以运行,但是在结束时会出现上面的问题。

如果我在dlg.CPP开头把变量声明成全局变量就没有这个错误,请问这是什么原因。

14 个解决方案

#1


这不能说明任何问题。。。

#2


UP~

#3


在线等啊……

#4


ASSERT(m_pchData != NULL);这个断言不过和你那几个变量没关系吧

#5


学习如果看 callstack 吧

#6


写错了,是学习如何看 callstack

#7


引用 4 楼 luciferisnotsatan 的回复:
ASSERT(m_pchData != NULL);这个断言不过和你那几个变量没关系吧


我在Dlg类中添加变量int nHeight1;int nWidth1;
然后int nHeight2;int nWidth2;只能声明成全局变量

郁闷

#8


引用 6 楼 lazy_2010 的回复:
写错了,是学习如何看 callstack


好的,我去看看

#9


程序我找了另外一种方法实现了,但是我还是想知道这个原因是为什么。
求大侠带……

#10


CString分配了CStringData和实际数据空间,但只用了一个指针m_pchData来记录,访问CStringData时是通过m_pchData-1来访问的。

#11


这里触发了这个断言,在不应为NULL的指针处为NULL了,这也看不出有啥问题嘛。

#12


自己顶一个

#13


怀疑你跨线程使用 CString ,或者其它问题;要想人帮你,还是上代码吧

#14


引用 13 楼 lazy_2010 的回复:
怀疑你跨线程使用 CString ,或者其它问题;要想人帮你,还是上代码吧


代码太长了,关键是我不知道哪一部分的问题……
我换了一种方法就把它解决了。

#1


这不能说明任何问题。。。

#2


UP~

#3


在线等啊……

#4


ASSERT(m_pchData != NULL);这个断言不过和你那几个变量没关系吧

#5


学习如果看 callstack 吧

#6


写错了,是学习如何看 callstack

#7


引用 4 楼 luciferisnotsatan 的回复:
ASSERT(m_pchData != NULL);这个断言不过和你那几个变量没关系吧


我在Dlg类中添加变量int nHeight1;int nWidth1;
然后int nHeight2;int nWidth2;只能声明成全局变量

郁闷

#8


引用 6 楼 lazy_2010 的回复:
写错了,是学习如何看 callstack


好的,我去看看

#9


程序我找了另外一种方法实现了,但是我还是想知道这个原因是为什么。
求大侠带……

#10


CString分配了CStringData和实际数据空间,但只用了一个指针m_pchData来记录,访问CStringData时是通过m_pchData-1来访问的。

#11


这里触发了这个断言,在不应为NULL的指针处为NULL了,这也看不出有啥问题嘛。

#12


自己顶一个

#13


怀疑你跨线程使用 CString ,或者其它问题;要想人帮你,还是上代码吧

#14


引用 13 楼 lazy_2010 的回复:
怀疑你跨线程使用 CString ,或者其它问题;要想人帮你,还是上代码吧


代码太长了,关键是我不知道哪一部分的问题……
我换了一种方法就把它解决了。