我有一个动态分配的结构数组。我正在编写一个向该数组添加新结构条目的函数。每次调用函数时 - 应重新分配数组的空间。
pa->arr = realloc(pa->arr, (pa->count + 1) * sizeof(struct product));
if (pa->arr == NULL)
return NULL;
结构数组 arr 由另一个结构 struct product_array * pa 维护,除了指向数组的指针 * arr 包含< strong> count (数组条目数)。
struct product_array {
struct product *arr;
unsigned int count;
};
struct product {
char *title;
};
另外,我必须分别为标题字段分配空间。
char *temp = malloc(strlen(title) + 1);
if (temp == NULL){
return NULL;
}
strcpy(temp, title);
title = temp;
pa->arr[pa->count].title = title;
该功能有效,但我得到Valgrid抱怨“无效读取大小8”。如果你能帮助我,我真的很感激。
答案 0 :(得分:0)
您收到的错误表明您正在读取未分配的内存。
也许你错过了这个:
pa->arr[pa->count - 1].title = title;
不是pa->arr[pa->count].title = title;
**我想将此作为评论发布,但仍然没有足够的声誉!