Нулевое разыменование в функции с указателем структуры в качестве входных данных

Ниже приведен устаревший код.

void InitializeStruct(someStruct* str); //function declaration

Теперь это используется следующим образом:

someStruct* myStruct = NULL;
int counter = 0;

int count = GetCount(); //obtains some count

if(count != 0)
{
myStruct = (someStruct*) malloc(count * sizeof(someStruct));
}

for(int i = 0; i < 3; ++i)
{
if(some condition)  //for some condition
{
InitializeStruct(&myStruct[counter]); //null dererferenced here
counter ++;
}
}

Как правильно это исправить?
Размер myStruct не известно заранее. Я думаю, причина, по которой он жалуется на разыменование null, состоит в том, что, если count = 0,

-1

Решение

Вам нужно выделить место для вашего массива из трех mystruct, как это:

mystruct *array = NULL;
...
array = new mystruct[3]; // Allocate memory for the array
for(int i = 0 ; i < 3 ; ++i)
{
InitializeStruct(&array[i]);
}
...
delete[] array; // When you are done with the array, free the memory
1

Другие решения


По вопросам рекламы [email protected]