事实上,你在编写C++程序时,你应该关系内存性能和优化等问题,如果你不关心这些,你为什么要用C++呢,有很多其他的语言你可以用,都2022年了,你为什么要写C++,除非你特别需要性能或者你要掌控一切。那你就要知道,new关键字是非常重要的。
new的作用就是在堆上分配内存
new就是找到一个足够大的内存块 以满足我们的需求 然后把指向那块内存的指针给我们
下面是一些关于new的使用方法与细节
int main() {
//在堆上创建一个int
int *a = new int;
//在堆上创建一个int数组,有4*50=200个字节
int *arr = new int[50];
//在堆上创建一个Person对象
//这里的new不仅分配内存,还会调用构造方法
Person *p = new Person("Name");
//实际上new分配内存调用的c的函数,像下面这样,但是我们在C++中不要这样写
Person *p1 = (Person *) (malloc(sizeof(Person)));
//上面两行代码的作用只是一个调用了构造函数,另一个没有调用
//既然使用了new,我们务必要调用delete~
delete p;
delete a;
//其实delete所作的就是调用c函数里面的free,像下面这样
free(p1);
//如果要delete使用了[]的new创建的内容,请使用delete[]来删除,像下面这样
delete[] arr;
return 0;
}
另外还有placement new ,就是要决定前面的内存来自哪里,像下面这样
int main() {
int *arr = new int[50];
//这样实际上没有分配内存,只是调用了构造方法,在特定的位置初始化了Person
Person *person = new(arr) Person();
return 0;
}
这里只是知道一下这个语法,后面再做详细讨论