1new的对应词是什么

2在计算机编程领域,new是一个常见的关键字,它用于创建新的对象或分配新的内存空间。那么,new的对应词是什么呢?在本文中,我们将探讨这个问题。

3 delete

4在C++语言中,new和delete是一对关键字,它们分别用于动态分配内存和释放内存。当我们使用new关键字创建一个新的对象时,必须在不需要该对象时使用delete关键字释放内存。例如:

5int* p = new int;

6*p = 123;

7delete p;

8在上面的代码中,我们使用new关键字动态分配了一个int类型的内存空间,并将其赋值为123。然后,我们使用delete关键字释放了这个内存空间。

9 malloc

10在C语言中,new关键字并不存在。相应地,C语言提供了另一个函数来动态分配内存,它就是malloc函数。与new不同的是,malloc函数只分配内存空间,而不会对该空间进行初始化。例如:

11int* p = (int*)malloc(sizeof(int));

12*p = 123;

13free(p);

14在上面的代码中,我们使用malloc函数分配了一个int类型的内存空间,并将其赋值为123。然后,我们使用free函数释放了这个内存空间。

15 new[]

16除了new关键字用于创建单个对象外,它还可以用于创建数组。在创建数组时,我们需要在new关键字后面加上方括号,并指定数组的长度。例如:

17int* p = new int[10];

18for (int i = 0; i

19 p[i] = i;

20}

21delete[] p;

22在上面的代码中,我们使用new关键字创建了一个包含10个int类型元素的数组,并将其初始化为0到9。然后,我们使用delete[]关键字释放了这个数组所占用的内存空间。

23 calloc

24在C语言中,malloc函数也可以用于创建数组。不过,与new[]不同的是,malloc函数并不会对数组进行初始化。因此,如果我们需要初始化数组,可以使用calloc函数。例如:

25int* p = (int*)calloc(10, sizeof(int));

26for (int i = 0; i

27 p[i] = i;

28}

29free(p);

30在上面的代码中,我们使用calloc函数创建了一个包含10个int类型元素的数组,并将其初始化为0到9。然后,我们使用free函数释放了这个数组所占用的内存空间。

31 placement new

32除了普通的new关键字外,C++语言还提供了一种特殊的new操作符,它被称为placement new。与普通的new不同的是,placement new并不会动态分配内存,而是将对象放置在已有的内存空间中。例如:

33char buf[sizeof(int)];

34int* p = new (buf) int;

35*p = 123;

36在上面的代码中,我们使用placement new操作符将一个int类型的对象放置在buf数组所占用的内存空间中,并将其赋值为123。

37 realloc

38在C语言中,realloc函数可以用于重新分配内存空间。如果我们需要扩大或缩小已有的内存空间,可以使用realloc函数。例如:

39int* p = (int*)malloc(sizeof(int));

40*p = 123;

41p = (int*)realloc(p, sizeof(int) * 2);

42p[1] = 456;

43free(p);

44在上面的代码中,我们使用malloc函数分配了一个int类型的内存空间,并将其赋值为123。然后,我们使用realloc函数将这个内存空间扩大为包含两个int类型元素的数组,并将第二个元素赋值为456。最后,我们使用free函数释放了这个数组所占用的内存空间。

45 free

46与new关键字对应的是delete关键字,在C语言中,与malloc函数对应的是free函数。当我们使用malloc函数动态分配内存空间时,必须在不需要该内存空间时使用free函数释放内存。例如:

47int* p = (int*)malloc(sizeof(int));

48*p = 123;

49free(p);

50在上面的代码中,我们使用malloc函数动态分配了一个int类型的内存空间,并将其赋值为123。然后,我们使用free函数释放了这个内存空间。