B *a = new B; 
可以等价于:
B *a = (B *)malloc(sizeof(B)); 

解决方案 »

  1.   

    这是JAVA吗?
    B *a = (B *)malloc(sizeof(B));
      

  2.   

    应该是java吧?
    大家没有看到过吗??
      

  3.   

    c++
    不等价
    B *a = new B; 调用构造函数B *a = (B *)malloc(sizeof(B));//只是分配内存 
      

  4.   

    茫然其它语言的吧B *a=new B;//java 里面这是不正确的书写   B a=new B();
      

  5.   

    不一样.
    new会自动调用构造方法,new是操作符.
    malloc负责分配内存,malloc是函数.
      

  6.   

     *是C/C++里的指针符.
     malloc()是C/C++里的内存块分配函数.
     
     无论是语法还是语义上, LZ的这行代码都和Java无关. 请问这行代码从哪里来的?  答案还是 不等价.. 虽然2行语句的执行结果可能相同. 
      

  7.   

    引用楼主 sure2003 的帖子:
    B *a = new B; 
    可以等价于: 
    B *a = (B *)malloc(sizeof(B)); 
     
    我感觉它是不可以等价的. 
    new可以自动调用构造方法;malloc不可以.
      

  8.   

    学Java的怎么连C都不看一眼呢!
      

  9.   

    这是C语言的。
    不等价的。B *a = new B;
    是调用构造方法,不但分配了空间,还执行了构造函数中的程序B *a = (B *)malloc(sizeof(B)); 
    只是在内存中分配了B这样的数据结构的空间给a指针。
      

  10.   

    肯定是c那边的啊 发错了LZ
      

  11.   

    malloc是在C或C++里面用来给结构或对象分配内存的,在JAVA中已经不再有这个了.因为JAVA中只要使用NEW关键字,便自动调用该类的构造器并实现该对象的实例化.这俩者已经是没什么关系了....
      

  12.   

    new会自动调用构造方法,new是操作符. 
    malloc负责分配内存,malloc是函数.
      

  13.   

    C当中的吧,在Java当中还真的从未见过