上期技术CTP API内存回收机制理解

CTP的登录代码段网上已经很多了,但是要达到一个实用的程序还相差很远,比如说长时间挂机的情景下多个账户需要每天多次登录登出,在这样的情况下,就要聊一聊登出的处理了!

在上期技术的文档“综合交易平台API开发FAQ”里有这样一段:

测试时发现 CThostFtdcMdSpi 有个比较严重的问题,就是使用 Release()退出清理对象时会出现死机,并且频率很高,怎样解决?
答:请参考以下代码的释放顺序。
void CUserApiEnv::UnInitialUserApi()
{
// 释放 UserApi
if (m_pUserApi)
{
m_pUserApi->RegisterSpi(NULL);
m_pUserApi->Release();
m_pUserApi = NULL;
}
// 释放 UserSpi 实例
if (m_pUserSpiImpl)
{
delete m_pUserSpiImpl;
m_pUserSpiImpl = NULL;
}
}

OK~!不清楚这段代码适用于哪个版本的API,但是实际使用时发现并不能解决问题。

在 m_pUserApi->Release(); 后代码就无效了,也就是说后面的释放UserSpi的段是失效的,然而如果去掉 m_pUserApi->Release(); 段,后面的UserSpi段能运行但会出现内存错误,FK!暂时没有找到解决的办法,还请赐教!