1 主线程 CMyClass * pMyClass =NULL;
2 分线程 pMyClass = new CMyClass;
3 分线程结束
4 主线程 delete pMyClass; 出错!因为只要是在分线程中new的“类”,都会随着线程结束而自动被delete掉,所以主线程再次delete就会出错~我找到了解决办法 就是在分线程中用 pMyClass = malloc(sizeof(CMyClass));问题是: 如果malloc一个类 怎么自动结构函数?free掉它的话 怎么调用析构函数?

解决方案 »

  1.   

    ps:用pMyClass = malloc(sizeof(CMyClass));  线程结束的时候 不会自动free
      

  2.   

    4 主线程 delete pMyClass; 出错! 
    不调用delete,直接pMyClass = NULL;如果你能确定你的子线程每次结束后都会free的话。
      

  3.   

    -。- 问题不是我delete出错 而是分线程结束了以后 pMyClass的内容没有意义了~ 我在主线程里还要用到pMyClass的~上面那些东西 我只是举个简单的例子实际上,我主线程有一个链表,分线程new出来的指针,都被add在主线程的链表中,链表里所有的内容以后都要用到,不想立即释放。
      

  4.   

    呵呵……那就在主线程中,来个指针记录一下呗……当然了也要记录它的HANDLE,指针在MFC下是不被推荐使用的,呵呵。
      

  5.   

    主线程先new好给分线程用不行吗?你这个明显是设计问题,要考虑修改设计。
      

  6.   

    ::new() 支持在现有内存当中进行构造,这样的话,就可以采用malloc/HeapAlloc等进行内存分配.然后再构造.
    http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/index.jsp?topic=/com.ibm.vacpp6m.doc/language/ref/clrc05cplr199.htm