STL中multimap的insert错误,该怎么
STL中multimap的insert异常,该如何?
typedef struct WORDID
{
string sWord;
unsigned int uiId;
} WordId;
WordId WordIdTemp;
typedef multimap <WordId, PortfolioItem, m_less <WordId> > PortfolioMap;
typedef multimap <WordId, PortfolioItem, m_less <WordId> > ::value_type PVT;
typedef multimap <WordId, PortfolioItem, m_less <WordId> > ::iterator PITOR;
WordIdTemp.sWord = ditor-> sWord;
WordIdTemp.uiId = ditor-> uiId;
PortfolioItemTemp.uiId = ditor-> uiId;
PortfolioItemTemp.sWord = ditor-> sWord;
PortfolioItemTemp.iFrequency = ditor-> iFrequency;
PortfolioItemTemp.sFolderName = fitor-> sFolderName;
PortfolioTemp.insert(PVT(WordIdTemp, PortfolioItemTemp)); // error
我程序用10000篇文章测试时没问题,Boss说让我测一下程序最多能支持多少篇文章,我就搞了20000。结果程序在error处出现异常。请问这是什么原因?
内存应该是够用的(4G用了3.x个G)。
我想进行一下异常处理,但是不知道insert失败返回的是什么,该如何判断?
谢谢!!!
------解决方案--------------------
windows程序每个程序最多就可以用2G,再多就内存分配失败了。
用try...catch,看effective C++关于内存分配失败时例子。
typedef struct WORDID
{
string sWord;
unsigned int uiId;
} WordId;
WordId WordIdTemp;
typedef multimap <WordId, PortfolioItem, m_less <WordId> > PortfolioMap;
typedef multimap <WordId, PortfolioItem, m_less <WordId> > ::value_type PVT;
typedef multimap <WordId, PortfolioItem, m_less <WordId> > ::iterator PITOR;
WordIdTemp.sWord = ditor-> sWord;
WordIdTemp.uiId = ditor-> uiId;
PortfolioItemTemp.uiId = ditor-> uiId;
PortfolioItemTemp.sWord = ditor-> sWord;
PortfolioItemTemp.iFrequency = ditor-> iFrequency;
PortfolioItemTemp.sFolderName = fitor-> sFolderName;
PortfolioTemp.insert(PVT(WordIdTemp, PortfolioItemTemp)); // error
我程序用10000篇文章测试时没问题,Boss说让我测一下程序最多能支持多少篇文章,我就搞了20000。结果程序在error处出现异常。请问这是什么原因?
内存应该是够用的(4G用了3.x个G)。
我想进行一下异常处理,但是不知道insert失败返回的是什么,该如何判断?
谢谢!!!
------解决方案--------------------
windows程序每个程序最多就可以用2G,再多就内存分配失败了。
用try...catch,看effective C++关于内存分配失败时例子。