我正在尝试创建动态字符串数组作为读取文件的缓冲区。关键是数组必须以给定的大小声明,但如果文件包含的行数多于缓冲区大小,则必须调整大小。我创建的缓冲区如下所示:
#define N 32
char **array = (char**) malloc((N+1)*sizeof(char*));
当涉及到重新分配时,我已经尝试过这种方式:
array = (char**) realloc(array, (2*N+1)*sizeof(char*));
但不幸的是,它会导致堆损坏。我应该如何正确地做?
最佳答案
你需要两个维度,像这样:
char **array = malloc((N+1) * (numEntries) * sizeof(char));
请注意,我使用的是 sizeof(char)
,而不是 sizeof(char *)
。
关于c - Realloc C 字符串数组堆损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20271110/