Realloc C字符串数组堆损坏

时间:2013-11-28 16:42:29

标签: c arrays visual-studio-2010

我正在尝试创建动态字符串数组作为读取文件的缓冲区。关键是必须使用给定的大小声明数组,但如果文件包含的行多于缓冲区大小,则必须调整大小。我创建的缓冲区看起来像这样:

#define N 32

char **array = (char**) malloc((N+1)*sizeof(char*));

在重新分配时,我已经尝试过这种方式:

array = (char**) realloc(array, (2*N+1)*sizeof(char*));

但遗憾的是它会导致堆损坏。我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

您需要两个维度,例如:

char **array = malloc((N+1) * (numEntries) * sizeof(char));

注意我使用的是sizeof(char),而不是sizeof(char *)