new与delete都是关键字,与for相似,不是库函数。

1. 使用new分配内存

通用格式是:类型名 指针 = new 类型名;如 int pi = new int;类型可以是基本数据类型、结构体、自定义类等。

image.png

2. 使用delete来释放内存

通用格式是:delete 指针名;注意 delete 与 new 配对,只能释放 new 分配的内存。delete只能用一次,不能释放指针两次
image.png

3.new创建动态数组

通用格式是:类型名 指针 = new 类型名 [ 数组大小 ];如 char pc = new char [234];pc 被赋值为第一个元素的地址,指向第一个元素。
image.png

4.delete 释放动态数组

通用格式是: delete [] 指针。
image.png

5.new创建动态数组

指针可当作数组名来使用,如 float * pf = new float [200];pf[24],是数组的第25个元素的值,下标从0开始
image.png

new创建多维数组

  1. int (*p)[4] = new int[3][4];

new来直接初始化

  1. #include <iostream>
  2. #include <string>
  3. struct stu{
  4. int age;
  5. string name;
  6. };
  7. int main{
  8. int* a = new int(0);//int初始化
  9. string* ps = new string("asdfasdfasd");//字符串初始化
  10. stu* stu1 = new stu{10, "huhao"};//结构体初始化
  11. }

new和delete是c++中用来分配动态内存的,c语言使用malloc呵free

image.png