好的,这是我的问题:
我有以下两个结构:
typedef struct {
size_t len; ///< total length of allocated memory
size_t pos; ///< position of the last char in the string
char* str; ///< char containing the actual data
} string;
和
typedef struct {
size_t len; ///< Number of Strings in the array
string** strings; ///< Strings contained in the array
} string_array;
这是我初始化新的string_array
的函数:
string_array *new_string_array(size_t len) {
string_array *str_arr = calloc(1, sizeof(str_arr));
if (str_arr == NULL) {
exit(4);
}
str_arr->strings = calloc(len, sizeof(string*));
for (size_t i = 0; i < len; i++) {
str_arr->strings[i] = calloc(1, sizeof(string));
}
str_arr->len = len;
return str_arr;
}
当我尝试像这样访问结构时:
string_array * return_values = new_string_array(2);
return_values->strings[1] = some_string;
我在Valgrind中收到无效读取。 我知道这里有很多问题,但是我发现没有一种实现对我有用。.预先感谢所有答案!