问题
		
		遇到个问题,程序隔段时间出现 
		
				
		
		
		
				
		
		vc++ map操作erase不正确引发的内存位置0x02dbfcd8处的std::out_of_range,这是什么问题?
		
				
		
		
				
						解答
				
		
		根据内存地址调试进去,发现是map中的erase 引起的,找了一些资料,有用的解释:
		
				
		
		
				1、假设我们定义了一个map类型的变量g_mapIsDestroyedRefCount,要访问容器中的数据项有多种方式。例如,获取g_mapIsDestroyedRefCount中key值为cameraId的值,可以这样:
				g_mapIsDestroyedRefCount[cameraId]
				g_mapIsDestroyedRefCount.at(cameraId)
				两种写法都可以获取key为cameraId的value,一般效果看不出来差别,但是当g_mapIsDestroyedRefCount中不存在key为cameraId的<key, value>时就会出现“std::out_of_range”访问越界问题。
		 
		
				
		
		
				2、在erase删除iterator写法要注意.
		
		
		
				
		
		
				A、先把it的值赋值给一个临时变量做为传递给erase的参数变量
				
						
				
				B、因为参数处理优先于函数调用,所以接下来执行了it++操作,也就是it现在已经指向了下一个地址。
				
						
				
				C、再调用erase函数,释放掉第一步中保存的要删除的it的值的临时变量所指的位置。
				
						
				
				
						
				
				
						
								如果只是mapTest.erase(it); 当这条语句执行完后,it就是一个非法指针,如果再执行++就会出错