CMapXFeature mft; mft = mlyr.GetFeatureByID(m_lHTID);  // 通过ID得到图元mft.GetPoint().Set(dx, dy);           // 为图元设置新的坐标位置
mft.Update();                         // 使图元新的位置生效// 注:mlyr 为CMapXLayer类型。m_lHTID为long类型。dx,dy为double类型我用VC封装了MAPX5,生成一个OCX“myEnMap.ocx"。 
上面的代码是这个myEnMap.ocx源码中一个片段。 用VB和VC分别对myEnMap.ocx进行测试后,发现: 
  1 这段代码在VB中表现正确(内存没有异常)。 
  2 在VC的测试程序中执行到mft.Update()时出现内存异常--内存不断增长(update后分配的内存不能释放)。如果注释掉mft.Update()则程序运行正确(内存没有异常)。 这是为什么呢?请大家帮帮我

解决方案 »

  1.   

    to  ouyh12345 
      谢谢。-------------------------------------------------------
    to ToperRay 
      操作系统的优化处理? 那为什么VB中正常?再请问一下VB和VC的内存管理机制是什么,一样吗?-------------------------------------------------------
    to jameshooo 
      Update是Mapx的一个方法。用更新地图元素,比如地图中的一个辆车从位置A移动到位置B时,就要用到这个Update
      

  2.   

    VB和VC的内存管理机制都是一样的,但使用的堆可能不同,比如win32堆、crt堆、com堆、自定义堆,Update方法中可能有内存释放操作,但是操作了不同的堆导致异常。寻求控件开发者的技术支持。
      

  3.   

    谢谢大家问题已解决。。上面的代码并没有问题。。问题出在程序的另一处代码。不知道让哪位仁兄把我的return 必为break了汗!~~~~