list pop_back 如何不可以用了

list pop_back 怎么不可以用了
我定义了2个容器来存储我从数据库中取出来的数据
typedef   ::std::map <CString,CString>   SQLRstMapField;

typedef   ::std::list <SQLRstMapField>   SQLRstMapList;

以前在vc6.0   stlport4.x下是没有问题的
改成2005用微软自带的stl就错误鸟
//
原因是找到了以前的是
//
list.push_back(SQLRstMapField);
2005下要用
list.insert(mapList.end(),SQLRstMapField);

可是为什么了。

下面是代码片段
while   ((row   =   mysql_fetch_row(m_hRes)))
  {
  MYSQL_FIELD   *fields;
fields   =   mysql_fetch_fields(m_hRes);
SQLRstMapField   fileMap;
if(NULL   ==   fields)
{
continue;
}

for(int   i   =   0;   i   <   fileCount;   ++i)
{
CString   fValue   = " ";
  if(row[i]!=NULL){
  fValue   =   row[i];
  }
fileMap[fields[i].name]   =   fValue;
  }
//2005改成insert的
mapList.insert(mapList.end(),fileMap);

                //   vc6.0下用stlport4.x是可以的
                //   2005下报错内存读写错误,说内存被锁住了
                  mapList.push_back(fileMap);
//delete   fields;
fields   =   NULL;
  }

------解决方案--------------------
//delete fields;
你这个是怎么回事?
你的SQLRstMapField实现了正确的拷贝构造函数么?