malloc与new的区别
来源:互联网 发布:中国话剧 知乎 编辑:程序博客网 时间:2024/05/29 02:47
malloc是一个函数,原型为 void* malloc(size_t size); new 是一个操作符
malloc只是分配内存,没有创建对象;new 是创建一个对象
对于非基本数据类型,用malloc分配内存时是不会调用对象的构造函数的;利用new新建对象时会调用构造函数
误区更正:之前一直以为malloc只能给基本数据类型分配空间,其实从malloc可以给struct分配内存就知道错了,malloc接受的参数是需要分配的内存大小,根本与类型无关。于是,导出了这样的一个问题:
Q:假设Node是如下的一个结构,Node* ptr = (Node*)malloc(sizeof(Node));ptr -> data = 1;以上两个语句实验证明是没有错的,那编译器是怎么知道分配的内存中有data这个变量呢?
struct Node{int data;Node* left;Node* right;};答:其实,编译器并不知道malloc()的内存中有data这个变量。只是,在把返回的地址转换成了一个Node类型的指针赋给ptr后,ptr -> data 就可以根据data在结构中的偏移量从ptr指向的地址开始找起,data是第一个变量,所以偏移量为0,data为int类型,占四个字节,故 ptr -> data = 1实际上做的是把从ptr指向的地方开始的前四个字节赋值整数1。不仅在结构是如此,在类中也是如此,因为结构与类没有本质的区别。
那就在此说一下结构与类的区别:
结构与类就一个区别,结构中无修饰符修饰时默认是public,类中默认是private
结构也有默认构造函数,也可以自定义构造函数。用使用new操作符创建一个结构时,也会调用结构相应的构造函数
0 0
- Malloc与new的区别
- malloc与new 的区别
- Malloc与new的区别
- Malloc与new 的区别
- malloc 与new 的区别
- Malloc与new的区别
- new与malloc的区别
- malloc与new的区别
- new与malloc的区别
- new与malloc的区别
- Malloc与new的区别
- Malloc与new 的区别
- Malloc与new的区别
- malloc与new的区别
- new与malloc的区别
- new与malloc的区别
- new与malloc的区别
- new 与 malloc的区别
- 北京54坐标与西安80坐标相互转换的两种方法
- ASP.NET中七种页面跳转的方法
- 静态数据成员应用
- Nyoj 293 + poj 1011 Sticks
- Android Application的作用
- malloc与new的区别
- baidu map 的ak 添加位置换到了manifest中
- java之String[] args的用法
- 黑马程序员_C语言学习笔记之运算符
- 给盲目跟风网络营销的商户们一个忠告——搞不好你会死得很惨
- OpenGL入门学习——第一课 编写第一个OpenGL程序
- CSS div javascript(js)、容器的理解
- 用new创建一个二维数组,有两种方法,是等价的
- 2102年android开发热门资料110个