c语言动态分配内存方法
时间: 2024-10-19 21:16:14 浏览: 36
在C语言中,动态内存分配通常使用标准库函数`malloc()`、`calloc()`、`realloc()`以及`free()`来完成。以下是这些函数的基本用途:
1. `malloc(size_t size)`:用于为指定大小的字节分配内存。如果成功,返回指向新分配内存块的指针;失败则返回`NULL`。
```c
void* ptr = malloc(sizeof(int)); // 分配一个int类型的内存空间
```
2. `calloc(size_t n, size_t size)`:不仅分配内存,还会初始化所有分配的元素为0。类似于`malloc()`, 返回成功时的指针,失败返回`NULL`。
```c
int* array = calloc(5, sizeof(int)); // 分配一个包含5个int的数组
```
3. `realloc(void* ptr, size_t new_size)`:已分配内存块的动态调整大小。如果新的大小大于当前大小,分配额外的空间;若小于当前大小,则释放部分多余空间。`ptr`是指向原内存区域的指针,`new_size`是新的所需大小。
```c
if (ptr != NULL) {
ptr = realloc(ptr, sizeof(double)*n); // 将int数组改为double数组
}
```
4. `free(void* ptr)`:释放先前由`malloc()`、`calloc()` 或 `realloc()` 动态分配的内存。记得总是释放不再需要的内存,防止内存泄漏。
```c
free(ptr); // 当不需要数组时,释放之前分配的内存
```
阅读全文