我在一个函数里定义了一个类指针:CTest *pTest = new CTest;
这个函数中有很多操作,也有大量的内存分配和删除等操作,但是在我这个函数没有跑完,并且我也没去调用的情况下,pTest指针在某一次我给其它变量分配内存时自动析构了。请问这是怎么回事?
我后面还有操作要继续用这个类指针,但是他析构了之后我在用就肯定出错了。这个该怎么解决?
这个函数中有很多操作,也有大量的内存分配和删除等操作,但是在我这个函数没有跑完,并且我也没去调用的情况下,pTest指针在某一次我给其它变量分配内存时自动析构了。请问这是怎么回事?
我后面还有操作要继续用这个类指针,但是他析构了之后我在用就肯定出错了。这个该怎么解决?
解决方案 »
- ···散分,庆祝luaEditor2.12发布···
- 碰到个问题,请高手赐教!谢谢
- 一个面试题:
- 对话框程序,resize属性,如何能不拖到最小,保持界面一定大小?
- 请问高手,如果提取矢量图的外围轮廓?
- LXFY来取分
- 请熟悉网络编程的出来把Socket、Winsock、Socks4/5等几个概念捋一捋清楚。
- 如何获取usb设备插入的usb hub对应的编号
- 我的程序里使用了STL,发布时需要附加什么dll吗?
- error C2601: local function definitions are illegal?这是什末错
- win7下C#代码中调用vc写的dll为什么失败
- 如何高效地读取内存及硬盘文件?起始地址及读取缓存的对齐问题。
在这些代码找问题,看看在哪部分代码将它delete了。
的时候不知道为什么直接跑到了CTest的~CTest()里面去了,让我很疑惑。而且我在最后要if(pTest != NULL)
{
delete []pTest;
pTest = NULL;这时候的pTest居然还不为空,导致了我delete失败。
你确定你是在执行这句之后直接跳到析构里边去的吗?
然后你的析构有这段代码是吧?
if(pTest != NULL)
{
delete []pTest;
pTest = NULL;
}
“pTest居然还不为空” 说明你的pTest是还没释放的,那样的话跟你的“pTest指针在某一次我给其它变量分配内存时自动析构了”有点矛盾了。
我觉得问题说清楚了才能比较容易解决。
我确定在我又分配一个char* pchar = new char[10];的时候,我在CTest的析构函数设置了一个断点,在没有走到下一条程序前,直接就跑到析构里面了。