malloc函数在c与c++中的具体用法
时间: 2023-12-03 10:05:44 浏览: 34
`malloc` 是 C 和 C++ 中用于动态分配内存空间的函数。它的具体用法如下:
在 C 语言中,`malloc` 的函数原型为:
```c
void* malloc(size_t size);
```
其中,`size_t` 是一个无符号整数类型,表示要分配的内存空间的大小(以字节为单位)。`malloc` 函数会在堆中分配一块大小为 `size` 的连续内存空间,并返回该内存空间的首地址。如果分配失败,`malloc` 函数会返回 `NULL`。
例如,下面的代码会在堆中分配一个大小为 10 字节的内存空间,并将其首地址赋值给指针 `p`:
```c
int* p = (int*) malloc(10 * sizeof(int));
if (p == NULL) {
// 分配失败
} else {
// 分配成功,使用内存空间
}
```
在 C++ 语言中,`malloc` 函数也可以用于动态分配内存空间,但是建议使用 `new` 运算符代替,因为 `new` 运算符可以处理对象的构造和析构。`new` 运算符的用法如下:
```c++
int* p = new int[10];
if (p == nullptr) {
// 分配失败
} else {
// 分配成功,使用内存空间
}
```
与 `malloc` 函数不同的是,`new` 运算符返回的是一个指向第一个元素的指针,而不是一个指向整个内存块的指针。此外,`new` 运算符还可以用于分配单个对象的内存空间,例如:
```c++
int* p = new int;
if (p == nullptr) {
// 分配失败
} else {
// 分配成功,使用内存空间
}
```
在使用完动态分配的内存空间后,应该使用 `free` 函数(在 C 语言中)或 `delete` 运算符(在 C++ 语言中)释放该内存空间,以避免内存泄漏。例如:
```c
free(p);
```
或者
```c++
delete[] p;
```
或者
```c++
delete p;
```
需要注意的是,对于使用 `new` 运算符分配的内存空间,必须使用 `delete` 运算符释放该内存空间。对于使用 `malloc` 函数分配的内存空间,必须使用 `free` 函数释放该内存空间。在 C++ 语言中,不应该混合使用 `malloc` 函数和 `new` 运算符,否则可能会导致不可预知的错误。