malloc/free和new/delete的主要区别以及c与c++关于结构体定义使用的区别

来源:互联网 发布:手机短信轰炸软件下载 编辑:程序博客网 时间:2024/05/16 10:58

问题引入:

研究如下两段代码:

struct SBall

{

         //to hold theballs coordinates

         intposX;

         intposY;

 

         //andvelocity¨´¨¨

         intvelX;

         intvelY;

 

         SBall(){}

};

         staticSBall* balls = new SBall[NUM_BALLS];

 

如果要我按照c语言的语法去写,一定是这样:

typedef _ SBall

{

} SBall

 

static SBall * balls= (SBall *)malloc(sizeof(SBall ) * NUM_BALLS )

 

1、首先理解c语言中为什么要使用typedef,因为C语言在定义结构体变量的时候,struct是不能省略的,而c++可以省略掉!

2、new和malloc的区别:

malloc/free和new/delete的主要区别如下:
(1)、malloc后面加的是你要分配的内存的大小,要用到sizeof,前面还要就加上强制指针类型转换,而new可以自动计算所需要大小。
(2)、malloc/free实质上是C++/C语言的标准库函数,new/delete是C++的运算符。new/delete厉害之处在于可以自动进行初始化/执行构造函数和析构函数。malloc/free完成不了这个任务。
(3)、C语言只能使用malloc/free。

0 0
原创粉丝点击