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后面的参数列表里面(有时候这个参数列表不用写出来,这时候就是随机分配的内存)传入一个指针,来分配指定位置的内存,