【发布时间】:2021-12-07 08:07:09
【问题描述】:
我想创建一个指向任意类型的指针数组并调整其大小。但是由于某种原因,这在第五次迭代中崩溃了:
#include <stdlib.h>
#include <stdio.h>
int main() {
int **data = NULL;
size_t size = 0;
for (size_t i = 0; i < 10; ++i) {
printf("begin iteration #%lu...\n", i + 1);
int *a = malloc(sizeof *a);
data = realloc(data, ++size);
data[size - 1] = a;
}
}
输出是:
begin iteration #1...
begin iteration #2...
begin iteration #3...
begin iteration #4...
begin iteration #5...
realloc(): invalid next size
Aborted (core dumped)
我知道已经有很多关于realloc(): invalid next size 的问题,我查看了其中的许多问题,但我仍然无法弄清楚。我很确定我在这里遗漏了一些相当基本的东西。
【问题讨论】:
-
"一个指向 arbitrary 类型的指针数组" 嗯...那你为什么要使用
int* -
@4386427 因为这是一个例子。
-
关于:
int *a = malloc(sizeof *a);这会导致不可恢复的内存泄漏