malloc函数怎样改写成C++中语句

来源:百度知道 编辑:UC知道 时间:2024/06/18 13:46:30
CarNode *p;
p=(CarNode *)malloc(sizeof(CarNode));
这里没有直接的长度大小,那怎么改啊
大侠帮我改改

其实内部存放类型信息的是指针,和空间没关系.
C++ new操作符在申请内存的时候会调用类的构造函数,并返回该类型的指针.
所以
CarNode *p = new CarNode;
这样调用,要不要()都可以.

但是如果类使用的是默认的无惨构造函数,那么
CarNode *p = (CarNode*) new char[sizeof(CarNode)];
这样也是可以的.
因为指针存放了类型信息,相关的使用不会有什么问题,释放也不会有问题. 这种方式就更象C语言的malloc的方式了,都不会调用类的构造函数..

这也是为什么为C++类对象申请内存时,尽量用new而不用malloc的原因了,毕竟构造函数调用与否是很重要的...直接关系到你程序运行的正确与否.

比如char *c;
c=(char *)malloc(sizeof(char)*8);
改成
char *c;
c=new char[8];

CarNode 是一个对象?

CarNode * p = new CarNode();

在使用完毕之后,记得
delete p;

c++使用new来动态申请内存,使用delete来释放内存。

例子:

char * p = new char[ 128 ];
delete[] p;

int * p = new int[ 100 ];
delete[] p;

等等....

如果是结构体或者对象(类);可以直接通过对象名来创建。

比如

typedef struct _node {
int a;
int b;
} NODE, *LPNODE:

可以

LPNODE pNode = new NODE();
//一些使用代码
delete pNode;
<