malloc 和 new
时间: 2024-09-11 15:12:40 浏览: 52
后端,面试,c++ ,找工作
`malloc` 和 `new` 都是用于在堆上分配内存的关键字,但它们分别用于不同的编程语言和具有不同的特性。
`malloc` 是 C 语言中的标准库函数,用于动态分配指定字节的内存空间。这个函数来自 `stdlib.h` 头文件,并且返回一个指向分配内存的指针,这块内存的内容是未初始化的。如果 `malloc` 成功分配了内存,它会返回一个指向该内存的 `void*` 指针;如果分配失败,则返回 `NULL`。在使用 `malloc` 分配的内存后,程序员需要明确地调用 `free` 函数来释放内存,以避免内存泄漏。
```c
#include <stdlib.h>
int *ptr = (int*)malloc(sizeof(int));
if (ptr == NULL) {
// 处理分配失败的情况
}
// 使用ptr指向的内存
free(ptr); // 释放内存
```
`new` 是 C++ 中的一个操作符,用于创建对象并分配内存。它不仅分配内存,还可以调用构造函数来初始化对象。使用 `new` 创建的对象,当不再使用时,会自动调用析构函数来清理资源,然后通过 `delete` 来释放内存。
```cpp
int *ptr = new int;
delete ptr; // 释放内存
```
`new` 也可以用来分配数组:
```cpp
int *array = new int[10]; // 分配一个整型数组
delete[] array; // 释放数组内存
```
需要注意的是,`new` 和 `delete` 是 C++ 的一部分,而 `malloc` 和 `free` 是 C 语言中的,但在 C++ 中也可以使用它们。
阅读全文