Мне нужно передать массив структур в функцию, и, насколько я понимаю, я должен выделить память для всего массива структур, а также для каждого отдельного члена структуры в каждой структуре внутри массива.
То, как я это сделал, приводит к недопустимой ошибке записи из valgrind (вызванной во второй строке внутри функции read_file). Что не так?
typedef struct test
{
char *string1;
int num1;
int num2;
char *string2;
} Test;
static void read_file(Test *test)
{
test = (Test *)calloc(16, sizeof(test));
test[0].string1 = (char *)calloc(strlen("hello") + 1, sizeof(char));
}
int main(void)
{
int i = 0;
Test test[16];
for (i = 0; i < 16; i++)
{
memset(&test[i], 0, sizeof(test[i]));
test[i] = (Test) { "", 0, 0, "" };
}
read_file(test);
return 0;
}
PS: я знаю, что мне нужно освободить выделенную память, но сначала я хочу, чтобы приведенный выше код работал.