一个很奇怪的问题,在Debug和Release中运行结果不一致????
我所用到的几个类结构大致如下:
struct __IConnectionPoint
{ virtual HRESULT __stdcall __QueryInterface(REFIID riid, void** ppv) = 0;
virtual ULONG __stdcall AddRef() = 0;
virtual ULONG __stdcall Release() = 0;
};
template<class _coclass, const IID* _lp_iid>
class CJKConnectionPointImpl : public __IConnectionPoint, public IEnumConnections
{
public:
vector<LPCONNECTDATA>* m_lpConns;
};
template <class _coclass, const IID* _lp_iid>
class CJKFileDownloaderCP : public CJKConnectionPointImpl<_coclass, _lp_iid>
{ ...
};
class CJKFileDownloader :
public IFileDownloader,
public IConnectionPointContainer,
public CJKFileDownloaderCP<CJKFileDownloader, &__uuidof(IFileDownloaderEvent)>,
public IErrorInfo
{
vector<LPCONNECTDATA>* GetSinkConnections() {return m_lpConns;} //!!!!!!!!
};
现在遇到的问题是:在Debug版本中,无论是在父类(CJKConnectionPointImpl )或子类(CJKFileDownloader )中,m_lpConns的地址都是一致的.(我对m_lpConns的操作全部放在父类中完成,子类只负责使用这个vector)
但是,在Release版本中,m_lpConns的地址在父类和子类中就不一样了,我看了一下他们相差24个字节,所以就导致在子类中不能正确获取m_lpConns中的数据.
大家帮我分析分析,看看倒底是出了什么问题啊????