delete this 问题

行路人 2011-11-15 02:27:51
为什么delete this以后还可以访问this指针?应该是不可以访问的呀!附上几行代码:
void CWinThread::Delete()
{
if (m_bAutoDelete)
delete this;
}

CWinThread::~CWinThread()
{
if (m_hThread != NULL)
CloseHandle(m_hThread);
AFX_MODULE_THREAD_STATE* pState = AfxGetModuleThreadState();
if (pState->m_pCurrentWinThread == this)
pState->m_pCurrentWinThread = NULL;
}
...全文
121 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
行路人 2011-11-15
  • 打赏
  • 举报
回复
回复4楼:应该是这个理 就是为什么在delete this 的时候F11不能跟到析构函数里去
pengzhixi 2011-11-15
  • 打赏
  • 举报
回复
析构函数当然有this指针啦,不然你觉得是析构谁呢
行路人 2011-11-15
  • 打赏
  • 举报
回复
回复2楼:那为什么析构函数中还可以看到this指针呢(调试的时候看到执行delete this后,局部变量窗口就没了this,运行到析构函数里 this又冒出来了)
拉卡尼休 2011-11-15
  • 打赏
  • 举报
回复
呵呵,因为delete this;是先调用析构函数,再释放内存,所以在析构函数里对象还是完整的。
無_1024 2011-11-15
  • 打赏
  • 举报
回复
delete this;
this = NULL;避免野指针的出现
pengzhixi 2011-11-15
  • 打赏
  • 举报
回复
在析构函数里面还是可以使用this指针的。不过等析构函数调用完在使用this指针就没什么意义了。
csdn网速很慢 2011-11-15
  • 打赏
  • 举报
回复
真的可以吗? 你调试看下this地址。 我觉着不能访问了。

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧