怎么会出现这种情况呢?
15 个解决方案
#1
写出你的delete语句看看。
#2
你没有new,何必delete?
#3
源代码!!!!!!!!
#4
可能性很多,例如你的指针指向一个类的实例,并不是用new分配的空间。
就像:
Class1 c;
Class1 *p;
p=&c;
...
delete p;
一定有问题。
就像:
Class1 c;
Class1 *p;
p=&c;
...
delete p;
一定有问题。
#5
(在没有源代码的情况下,神可以解决一切) && (我不是神)
then 我们需要源代码!!!!
then 我们需要源代码!!!!
#6
CString strFilePath;
while(!m_MsgList.IsEmpty())//m_MsgList是一个CPtrList类的实例
{
CMsg *pMsg;//CMsg为我自己定义的一个类,基类是CObject
pMsg=(CMsg *)m_MsgList.RemoveHead();
strFilePath=pMsg->szFilePath;//szFilePath是CMsg类的成员变量
delete pMsg;
}
以上是我的相关的部分程序,请指教!
while(!m_MsgList.IsEmpty())//m_MsgList是一个CPtrList类的实例
{
CMsg *pMsg;//CMsg为我自己定义的一个类,基类是CObject
pMsg=(CMsg *)m_MsgList.RemoveHead();
strFilePath=pMsg->szFilePath;//szFilePath是CMsg类的成员变量
delete pMsg;
}
以上是我的相关的部分程序,请指教!
#7
当你为一个指针申请了一定的空间
但是在无意中改变了空间的大小或结构
delete的时候就汇报错
但是在无意中改变了空间的大小或结构
delete的时候就汇报错
#8
需要用delete删除的应该是用new动态建立的指针,而你这个是一个CMsg类型的指针变量,所以你不能用delete来释放它。
#9
这样的指针不能delete,就像Iamcoming说的一样:
Class1 c;
Class1 *p;
p=&c;
...
delete p;
Class1 c;
Class1 *p;
p=&c;
...
delete p;
#10
你这样当然不行
你根本就不应该释放
因为pMsg的空间根本不是pMsg的
而是m_MsgList.RemoveHead()的
这一空间可能不可以释放
CMsg *pMsg = new CMsg();
delete pMsg;
这样是可以的
你根本就不应该释放
因为pMsg的空间根本不是pMsg的
而是m_MsgList.RemoveHead()的
这一空间可能不可以释放
CMsg *pMsg = new CMsg();
delete pMsg;
这样是可以的
#11
在你这种情况下不要delete,当出了作用范围时,pMag会被自动销毁。如果你的m_MsgList中元素都是new出来的话,在这里delete不会出错,但之后你销毁 m_MsgList还是会出错,因为你对一个指向一块已经销毁内存的指针(m_MsgList的元素)再次delete时,会出错!
#12
CComboBox *p=new CComboBox;
p=(CComboBox *)GetDlgItem(IDC_FUNNY);
.
.
.
delete p;
以上一定出错!
但是
CComboBox *p=new CComboBox;
.
.
.
delete p;
一定不出错!!
你好好想想吧!
p=(CComboBox *)GetDlgItem(IDC_FUNNY);
.
.
.
delete p;
以上一定出错!
但是
CComboBox *p=new CComboBox;
.
.
.
delete p;
一定不出错!!
你好好想想吧!
#13
你没有new那你delete赶什么?
我认为new和delete应该对称出现的!
各位认为如何?
我认为new和delete应该对称出现的!
各位认为如何?
#14
删除出错可能有两个原因:
1.Addxxxx 或 Insertxxxx 的 CObject* 参数所代表的指针并不是new出来的
2.new 和 delete 不配套,如 new xx[] 而 delete xx; 或 new xx, delete []p。
如果上述原因都不是,我也猜不出来了。如果没有保密的情况,可以发个源码给我,我帮你看看。 bird_wang@163.com
1.Addxxxx 或 Insertxxxx 的 CObject* 参数所代表的指针并不是new出来的
2.new 和 delete 不配套,如 new xx[] 而 delete xx; 或 new xx, delete []p。
如果上述原因都不是,我也猜不出来了。如果没有保密的情况,可以发个源码给我,我帮你看看。 bird_wang@163.com
#15
我来学习一下
#1
写出你的delete语句看看。
#2
你没有new,何必delete?
#3
源代码!!!!!!!!
#4
可能性很多,例如你的指针指向一个类的实例,并不是用new分配的空间。
就像:
Class1 c;
Class1 *p;
p=&c;
...
delete p;
一定有问题。
就像:
Class1 c;
Class1 *p;
p=&c;
...
delete p;
一定有问题。
#5
(在没有源代码的情况下,神可以解决一切) && (我不是神)
then 我们需要源代码!!!!
then 我们需要源代码!!!!
#6
CString strFilePath;
while(!m_MsgList.IsEmpty())//m_MsgList是一个CPtrList类的实例
{
CMsg *pMsg;//CMsg为我自己定义的一个类,基类是CObject
pMsg=(CMsg *)m_MsgList.RemoveHead();
strFilePath=pMsg->szFilePath;//szFilePath是CMsg类的成员变量
delete pMsg;
}
以上是我的相关的部分程序,请指教!
while(!m_MsgList.IsEmpty())//m_MsgList是一个CPtrList类的实例
{
CMsg *pMsg;//CMsg为我自己定义的一个类,基类是CObject
pMsg=(CMsg *)m_MsgList.RemoveHead();
strFilePath=pMsg->szFilePath;//szFilePath是CMsg类的成员变量
delete pMsg;
}
以上是我的相关的部分程序,请指教!
#7
当你为一个指针申请了一定的空间
但是在无意中改变了空间的大小或结构
delete的时候就汇报错
但是在无意中改变了空间的大小或结构
delete的时候就汇报错
#8
需要用delete删除的应该是用new动态建立的指针,而你这个是一个CMsg类型的指针变量,所以你不能用delete来释放它。
#9
这样的指针不能delete,就像Iamcoming说的一样:
Class1 c;
Class1 *p;
p=&c;
...
delete p;
Class1 c;
Class1 *p;
p=&c;
...
delete p;
#10
你这样当然不行
你根本就不应该释放
因为pMsg的空间根本不是pMsg的
而是m_MsgList.RemoveHead()的
这一空间可能不可以释放
CMsg *pMsg = new CMsg();
delete pMsg;
这样是可以的
你根本就不应该释放
因为pMsg的空间根本不是pMsg的
而是m_MsgList.RemoveHead()的
这一空间可能不可以释放
CMsg *pMsg = new CMsg();
delete pMsg;
这样是可以的
#11
在你这种情况下不要delete,当出了作用范围时,pMag会被自动销毁。如果你的m_MsgList中元素都是new出来的话,在这里delete不会出错,但之后你销毁 m_MsgList还是会出错,因为你对一个指向一块已经销毁内存的指针(m_MsgList的元素)再次delete时,会出错!
#12
CComboBox *p=new CComboBox;
p=(CComboBox *)GetDlgItem(IDC_FUNNY);
.
.
.
delete p;
以上一定出错!
但是
CComboBox *p=new CComboBox;
.
.
.
delete p;
一定不出错!!
你好好想想吧!
p=(CComboBox *)GetDlgItem(IDC_FUNNY);
.
.
.
delete p;
以上一定出错!
但是
CComboBox *p=new CComboBox;
.
.
.
delete p;
一定不出错!!
你好好想想吧!
#13
你没有new那你delete赶什么?
我认为new和delete应该对称出现的!
各位认为如何?
我认为new和delete应该对称出现的!
各位认为如何?
#14
删除出错可能有两个原因:
1.Addxxxx 或 Insertxxxx 的 CObject* 参数所代表的指针并不是new出来的
2.new 和 delete 不配套,如 new xx[] 而 delete xx; 或 new xx, delete []p。
如果上述原因都不是,我也猜不出来了。如果没有保密的情况,可以发个源码给我,我帮你看看。 bird_wang@163.com
1.Addxxxx 或 Insertxxxx 的 CObject* 参数所代表的指针并不是new出来的
2.new 和 delete 不配套,如 new xx[] 而 delete xx; 或 new xx, delete []p。
如果上述原因都不是,我也猜不出来了。如果没有保密的情况,可以发个源码给我,我帮你看看。 bird_wang@163.com
#15
我来学习一下