typedef struct _PHONE_TYPE 
{
string areacode;
string phonetype;
int  is_prepaid;
}PHONE_TYPE;
typedef vector<PHONE_TYPE>  vprocmsg;
typedef map<string,vprocmsg> proc_type;     每次执行下面的查找语句:
vprocmsg vmsg;
proc_type::iterator iter;
iter = g_mapproc_type.find(proctype); --其中:proctype是传入的差数,类型是string
if (iter != g_mapproc_type.end())
{
vmsg = iter->second;
for (unsigned int nmsg = 0; nmsg < vmsg.size();nmsg ++)
{ }
}
问题是:开始执行的(每次传入的proctype的值是一样的)时候可查找到所需要的数据,但是到执行了一段时间后就
出现查找不到数据。请问那位高手遇到过这样的问题,请出手,小弟先谢谢了。

解决方案 »

  1.   

    你要准确描述,“一段时间”是多少时间?一秒钟?一天?还是一年?有没有内存泄漏?有没有越界访问?其他地方有没有对g_mapproc_type的操作?是什么操作?
      

  2.   

    做个记号来关注下结果不过我平时也有这样的体会,CString 或者string 使用起来,前者最好别用来做KEY,后者没有体会。 楼主可以单步运行,看看各个值的变化,相信找到原因应该是不苦难的,你说一段时间,实在是太过武断了,应该单步检查
      

  3.   

    to Mackz:对g_mapproc_type是多线程同时访问,
    但是对g_mapproc_type访问是加了锁的to wutaihua:是一个文件包含很多条记录,每条记录含有很多的字段,先把每个字段解析出来,在通过上面的函数去查。
    一段时间是连续运行6个小时,6小时后就查不到数据了。(因此按照2楼说的单步比较困难)。
      

  4.   

    感觉象这样的服务器程序还是不要使用stl(至少在vc6.0)来存储数据,可以用结构体来实现。