new

它是一个操作符,也可以重载
主要目的是在堆上分配内存,做的事情是在堆上找到一块足够大的内存,然后返回对应的指针,我们拿到指针之后就可以进行其他操作,另外如果new一个类的对象,则同时还会调用构造函数,例如:

Entity* e = new Entity();
Entity* e = (Entity*)malloc(sizeof(Entity));
//这两句的效果差不多,区别在于new不仅是分配空间,而且
//还调用了构造函数。另外实际上new的实现还是调用了malloc

用完new之后要手动delete,不然对应的这块内存就不会被释放

int* b = new int[50];
delete[] b;

使用new之后的内存管理也可以实现自动化进行,这一点在cherno后期的视频里会讲内存管理,后面再来记

placement new

可以在new后面的参数列表里面(有时候这个参数列表不用写出来,这时候就是随机分配的内存)传入一个指针,来分配指定位置的内存,

全部评论

相关推荐

喜欢走神的孤勇者练习时长两年半:池是池,发是发,我曾池,我现黑
点赞 评论 收藏
分享
球球别再泡了:坏,我单9要了14
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务