Я пытаюсь динамически изменить размер массива структур внутри функции, которая читает данные из файла, поэтому я не знаю размер во время компиляции.
При заполнении динамически возникает ошибка выделенные массивы "Исключение исключено: нарушение прав записи") в главной строке в одной из строк, присваивающей значения этому массиву по (на вид) случайному индексу, например i=170
в (mystruct_array)[i].b = i
в основном, что указывает на то, что я неправильно распределяю память в функции. Я искал здесь, но не могу найти, что я делаю неправильно - я ценю, что это, вероятно, что-то тривиальное, что мне не хватает. Итак, пожалуйста, что я делаю не так здесь?
#define ELEMENT_COUNT 10000
typedef struct mystruct
{
uint64_t a;
uint64_t b;
uint64_t c;
} mystruct_t;
void test(mystruct_t ** p_struct_array, uint32_t * p_count)
{
*p_count = ELEMENT_COUNT;
*p_struct_array = malloc(ELEMENT_COUNT * sizeof(mystruct_t *));
}
void main()
{
mystruct_t * mystruct_array = NULL;
uint32_t count;
test(&mystruct_array, &count);
for (uint64_t i = 0; i < ELEMENT_COUNT; i++)
{
(mystruct_array)[i].a = i;
(mystruct_array)[i].b = i;
(mystruct_array)[i].c = i;
}
getch();
}