对Struct数组成员的无效读/写指向另一个结构?

时间:2019-05-13 16:24:39

标签: c arrays struct calloc

好的,这是我的问题:

我有以下两个结构:

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中收到无效读取。 我知道这里有很多问题,但是我发现没有一种实现对我有用。.预先感谢所有答案!

0 个答案:

没有答案