如何用malloc为指针数组申请连续内存
时间: 2024-09-28 19:12:47 浏览: 54
在C语言中,如果你想为一个指针数组动态地申请连续的内存空间,可以使用`calloc()`函数,而不是`malloc()`, 因为`calloc()`会同时分配内存并清零。如果你确定不需要初始化为0,那么`malloc()`也可以。
以下是使用`malloc()`的例子:
```c
size_t array_size = 5; // 指针数组的大小
size_t element_size = sizeof(int); // 每个元素的大小
// 使用malloc为指针数组申请内存
void **pointer_array = malloc(array_size * sizeof(void*));
if (pointer_array == NULL) {
printf("Memory allocation failed.\n");
} else {
for (int i = 0; i < array_size; i++) {
pointer_array[i] = malloc(element_size); // 分配每个元素的内存
if (pointer_array[i] == NULL) {
printf("Failed to allocate memory at index %d.\n", i);
free(pointer_array[i]); // 清理已失败的分配
break;
}
}
// 使用完后记得释放所有动态分配的内存
for (int i = 0; i < array_size; i++) {
free(pointer_array[i]);
}
free(pointer_array);
}
```
在这个例子中,我们首先为指针数组本身分配内存,然后为每个元素分配内存。别忘了在程序结束时释放这些内存,防止内存泄漏。
阅读全文