#define PLACE_LEN (20)
struct SPlaceName {
charczName[PLACE_LEN+1];
BYTEbType;// 地标、POI名类型
BYTEbLevel;// 地标、POI名显示等级, 原数据的显示等级
BYTEbScale;// 显示比例
BYTEbEng;// 英文下显示标记
BYTEbFlag;
POINTptPos;
};
vector<SPlaceName>m_vecPlaceName;
BOOL LessEMGType(const SPlaceName& p1, const SPlaceName& p2)
{
if (p1.bLevel > p2.bLevel)
{
return TRUE;
}
else if (p1.bLevel == p2.bLevel)
{
return p1.bType < p2.bType;
}
else
{
return FALSE;
}
}
大量数据push进m_vecPlaceName,然后对其排序。
if (!m_vecPlaceName.empty()) {
stable_sort(m_vecPlaceName.begin(), m_vecPlaceName.end(), LessEMGType);
}
现在的问题是最上面的宏定义长度为20的情况下程序正常,我把长度加到30就会发生0XC0000005错误。
DEBUG是死在stable_sort里面。。
求解为什么,怎么解决
struct SPlaceName {
charczName[PLACE_LEN+1];
BYTEbType;// 地标、POI名类型
BYTEbLevel;// 地标、POI名显示等级, 原数据的显示等级
BYTEbScale;// 显示比例
BYTEbEng;// 英文下显示标记
BYTEbFlag;
POINTptPos;
};
vector<SPlaceName>m_vecPlaceName;
BOOL LessEMGType(const SPlaceName& p1, const SPlaceName& p2)
{
if (p1.bLevel > p2.bLevel)
{
return TRUE;
}
else if (p1.bLevel == p2.bLevel)
{
return p1.bType < p2.bType;
}
else
{
return FALSE;
}
}
大量数据push进m_vecPlaceName,然后对其排序。
if (!m_vecPlaceName.empty()) {
stable_sort(m_vecPlaceName.begin(), m_vecPlaceName.end(), LessEMGType);
}
现在的问题是最上面的宏定义长度为20的情况下程序正常,我把长度加到30就会发生0XC0000005错误。
DEBUG是死在stable_sort里面。。

求解为什么,怎么解决
