我往一个tab页面的子对话框里添加一个list控件,并添加了一个变量listcontrol变量,调试错误信息如下
Error: no data exchange control with ID 0x03FA.
...............
Detected memory leaks!
Dumping objects ->
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {129} normal block at 0x003ACE78, 42 bytes long.
 Data: <| Ox            > 7C D9 4F 78 0C 00 00 00 0C 00 00 00 01 00 00 00 
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp(195) : {128} normal block at 0x003ACE38, 0 bytes long.
 Data: <> @
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp(181) : {127} normal block at 0x003ACDF8, 4 bytes long.
 Data: <    > FF FF FF FF 
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {109} normal block at 0x003AC528, 22 bytes long.
 Data: <| Ox            > 7C D9 4F 78 02 00 00 00 02 00 00 00 01 00 00 00 
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp(195) : {108} normal block at 0x003AC4A8, 64 bytes long.
 Data: <                > 01 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occmgr.cpp(181) : {107} normal block at 0x003AC448, 36 bytes long.
 Data: <                > FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 
Object dump complete.
第一行的错误id就是那个list控件,我搜了一下,好像内存泄漏,但是我只是为这个控件添加了一个变量而已,其他什么操作都没有,同样的我在主对话框作同样的操作却没有问题,这是怎么回事?

解决方案 »

  1.   

    VC6未加sp6补丁好像是有CString的内存泄露的。
    至于Error: no data exchange control,你是不是添加了变量之后,把控件删除过了?
      

  2.   

    打开resource.h看看是不是有重复ID?
      

  3.   

    检查一下资源文件和你的源码,看看ID为0x03FA的这个list控件是否存在,不存在就需要把绑定的控件删除,重新添加控件绑定。如果存在,rebuild all
      

  4.   

    我是用的vs2005里的mfc,应该不是cstring内存泄漏的问题.我看了一下resource.h没有重复id.
    不过我开始添加过变量后来又删除了,那该怎么弄呢?
      

  5.   

    我添加了的list控件是IDC_LIST3,变量是myctrllist,如果我注释掉这一句DDX_Control(pDX, IDC_LIST3, l_myctrllist);就不会报错,这是怎么回事?
      

  6.   

    我添加了的list控件是IDC_LIST3,变量是myctrllist,如果我注释掉这一句DDX_Control(pDX, IDC_LIST3, l_myctrllist);???
    l_myctrllist?这个名字从哪里来的,你删掉的那个控件的?
      

  7.   

    对不起,打错了DDX_Control(pDX, IDC_LIST3, l_myctrllist)本来是DDX_Control(pDX, IDC_LIST3, myctrllist)我删除掉后编译能通过,但是我再添加一个listctrl就有出现了这个问题
      

  8.   

    但是我再添加一个listctrl就有出现了这个问题ddx_control可手动设置你删除的时候最好把DDX_Control(pDX, IDC_LIST3, l_myctrllist)之类的一起删掉
      

  9.   

    检查一下资源文件和你的源码,看看ID为0x03FA的这个list控件是否存在,不存在就需要把绑定的控件删除,重新添加控件绑定。如果存在,rebuild all
    ==========
    同意
      

  10.   

    自己手动添加DDX_Control就三个地方
    1: .h 中声明
    2: 构造函数里初始化
    3:DoDataExchange函数