如果在调用Connect
之后但在调用OnConnect
callback之前删除了CAsyncSocket
,则CAsyncSocket
崩溃我的应用程序。 ASSERT(pSocket != NULL)
在CAsyncSocket::DoCallBack
失败,应用程序退出。
换句话说,如果我创build一个CAsyncSocket
,尝试将其连接到服务器,然后在连接成功或失败之前终止它,我有问题。 我可以通过实现OnConnect
并设置一个表示连接尝试完成的标志来避免这种特殊的崩溃。 如果该标志是错误的,我知道删除是不安全的。
在删除对象之前,是否还需要检查其他情况? 有没有一种方法来检查它是否安全? 或者是否需要为我可能启动的任何操作( OnReceive
, OnSend
, OnConnect
)实现所有callback,并确保已经调用了这些callback?
请参阅FIX:声明失败,Sockcore.cpp,Microsoft支持文章475行执行分析。