求解: Compare Function 在 std::sort中的錯誤~(VC6)
為何以下這樣簡單的做法會產生了 Runtime Error?
當數量帶到某一個數後~compare function 就會收到一個爛的pointer 而產生錯誤~
要怎樣解決呢?這是否VC6 standard library 的bug?
#include <vector>
#include <algorithm>
#include <tchar.h>
#include <windows.h>
typedef struct _SIMInfo
{
BOOL bOnline;
} SIMInfo;
std::vector<SIMInfo*> m_arr;
bool CompareFriend(SIMInfo * infox, SIMInfo * infoy)
{
bool b = infox->bOnline;
bool b2 = infoy->bOnline;
return true;
}
int main(int argc, char* argv[])
{
for (int i = 0; i < 50; ++i)
{
SIMInfo * pinfo = new SIMInfo;
memset(pinfo, 0, sizeof(SIMInfo));
m_arr.push_back(pinfo);
}
std::sort(m_arr.begin(), m_arr.end(), CompareFriend);
return 0;
}