add_vertex
,
gptr->size == 8
和
gptr->matrix
指向指向malloc'ed内存的8个指针数组。
gptr->size++;
现在
gptr->size == 9
gptr->matrix = realloc(gptr->matrix, gptr->size * sizeof(*gptr->matrix));
现在呢
指向由9个指针组成的数组。
gptr->matrix[0] .. gptr->matrix[7]
是以前的有效malloc'ed指针,以及
gptr->matrix[8]
for (unsigned i = 0; i < gptr->size; i++)
/* ERROR */
gptr->matrix[i] = realloc(gptr->matrix[i], gptr->size * sizeof(**gptr->matrix));
自从
传给
realloc
. 不好的。
您可以迭代循环
gptr->size - 1
gptr->matrix[gptr->size - 1] = malloc(...)
分别地或者,为了有点懒惰并避免代码重复,您可以初始化
gptr->matrix[gptr->size - 1] = NULL
gptr->size
时间,并依赖于方便的功能
realloc(NULL, sz)
相当于
malloc(sz)
.