new char[256]虽然也是调用malloc,但是它添加很多MFC自己定义的东西在里面和其他操作,new为操作符,如:在debug下,会加入该内存的各种标志,用来判断该内存是否泄漏,还有该内存的(是否为对象)类型等等

解决方案 »

  1.   

    when malloc() the object can not  use construct function but new() can.
    CPen* myPen;
    myPen=new Cpen(PS_SOLID,3,RGB(0,0,255));
      

  2.   

    malloc只返回你所要求的大小的一段内存区域的指针,因为它不知道这段内存做何用处,所以它返回一个void类型的指针,但new是C++的操作符,它知道所要开辟的内存区域作何用处,另外,如果new一个类的话,会自动调用构造函数,但malloc函数不会自动调用构造函数,所以,用malloc会绕过构造函数,它破坏了类的封装机制,不推荐使用。
      

  3.   

    同意 codewarrior 的说法。
    在Debug模式下,new被重定义为DEBUG_NEW,不再是简单的分配内存,还可以帮你看看是否存在内存泄漏。
      

  4.   

    malloc 是 C 语言的使用方式,new 是C++下扩充的,所以用 new 比较好!!
      

  5.   

    学习,学习!好象还有new和delete配对使用,malloc和free配对使用,千万不要搞错,否则将导致不可预知的问题!