注册 登录
编程论坛 C++教室

问个问题,关于 malloc和new

zhb_ice 发布于 2007-11-17 00:01, 565 次点击
malloc和new有什么区别

有一个程序
#include<iostream>
using namespace std;

class b
{
private:
b* pb;

public:
b();
void view();
};

void b::view()
{
cout<<"view"<<endl;
}


b::b()
{
pb = new b;
}

int main()
{
b a;
a.view();
return 0;
}


能够编译通过,但是缺不能调用view()函数,
如果把构造函数改成 pb = (b*)malloc(sizeof(b)); 就可以调用,比较奇怪 有人能解释下吗

4 回复
#2
corrupt2007-11-17 13:44
new 会调用构造函数
#3
zhb_ice2007-11-17 22:00
能够解释下为什么在这个地方用使用new会出现问题吗
有点不明白 以前一直用的是new 没有遇到过这问题
#4
duccdd2007-11-17 22:13
以下是引用corrupt在2007-11-17 13:44:36的发言:
new 会调用构造函数

这样是不是就会进入死循环?

#5
bluebell2007-11-22 22:28
malloc分配的是固定的格式,即大小固定,而new 分配的会根据参数自动确定地址的大小
1