level 12
jiaon
楼主
各位大神:
我的编译器是vs2010,debug版没问题,release版经常弹框,有时候也不弹。加log看是在一个函数里面,通过一个dll导出类的对象得到一个vector,用完以后出函数体时候弹的框。
相关代码:
struct RectInBalloonElemnet_t
{
RECT rect;
long nProperty;
};
void Player::DrawFire(DWORD dwCurrentTime)
{
vector<RectInBalloonElemnet_t> rectBalloon;
m_pLgSprite->GetHitRect(rectBalloon);
......
//过了这弹框
}
dll里面的这个get:
void BaseLogicSprite::GetHitRect( vector<RectInBalloonElemnet_t>& rect )
{
if (m_vecHitRect.size()!=0){
rect.assign(m_vecHitRect.begin(),m_vecHitRect.end());
}
}
看stack是从我的程序调到msvcr100!78ab016a 再到ntdll!7c91082c ,然后就ntdll!7c9109f9 0xc0000005 access violation了.
这个vector哪用错了吗?其它地方类似的用法也弹过框...
2013年04月19日 01点04分
1
我的编译器是vs2010,debug版没问题,release版经常弹框,有时候也不弹。加log看是在一个函数里面,通过一个dll导出类的对象得到一个vector,用完以后出函数体时候弹的框。
相关代码:
struct RectInBalloonElemnet_t
{
RECT rect;
long nProperty;
};
void Player::DrawFire(DWORD dwCurrentTime)
{
vector<RectInBalloonElemnet_t> rectBalloon;
m_pLgSprite->GetHitRect(rectBalloon);
......
//过了这弹框
}
dll里面的这个get:
void BaseLogicSprite::GetHitRect( vector<RectInBalloonElemnet_t>& rect )
{
if (m_vecHitRect.size()!=0){
rect.assign(m_vecHitRect.begin(),m_vecHitRect.end());
}
}
看stack是从我的程序调到msvcr100!78ab016a 再到ntdll!7c91082c ,然后就ntdll!7c9109f9 0xc0000005 access violation了.
这个vector哪用错了吗?其它地方类似的用法也弹过框...