Я пытаюсь сделать индексатор элементов с двойным указателем, чтобы можно было получить указатель на конкретный элемент по его номеру.
Я бы предпочел использовать массив для этой задачи, но максимальное значение элементов неизвестно.Итак, мне нужно каким-то образом получить доступ по индексу.
В VS я получил ошибку "Адрес записи нарушения доступа 0x0000000000000000"
typedef struct {
char * data_3;
int data_1;
float data_2;
// and other data, doesnt matter
}obj_t;
void process_item(obj_t * input_item)
{
// do something...
}
obj_t * create_new_item()
{
obj_t * local_obj;
// do something...
return local_obj;
}
int get_max_items()
{
return 8; // just some number, which can be set from outside
}
int main()
{
int i;
obj_t * item = NULL;
obj_t ** item_indexer = NULL;
for (i = 0; i < get_max_items(); i++)
{
item = create_new_item(); // create different items
item_indexer[i] = &item; // Error: access violation writing location 0x0000000000000000
}
process_item(item_indexer[i]); // need send item with specific index
}
Я ожидал использовать его как массив:
item_indexer[0] is (*item) created at i = 0
item_indexer[1] is (*item) created at i = 1
...
и смогу отправить конкретный элемент
Но я застрял с ошибками по поводу нарушения прав доступа.