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++关于内存分配失败时例子。