В заголовочном файле API я нашел странное объявление функции:
void API_GetParameter(API_SOMESTRUCT param[API_NUM_CONST]);
, где API_NUM_CONST
- это значение перечисления, а API_SOMESTRUCT
- это структура, поэтому я предполагаю, что param
- этомассив этой структуры.
Таким образом, функция ожидает существующее поле данных, которое она заполняет или изменяет. Я не могу сказать, что делает функция API внутри.
Прямо сейчас мой код выглядит так:
API_SOMESTRUCT *param = new API_SOMESTRUCT[API_NUM_CONST];
API_GetParameter(param);
// ... read out param
delete[] param;
param = NULL;
Но я подозреваю, что этот кусок кода ответственениз-за ошибки повреждения кучи, которую я недавно получил, и я не уверен, что мой вызов правильный.
Я понимаю заголовки функций с неконстантными массивами для параметров, которые выглядят так:
void fun(int *arr); // expects a pointer to a non-const int array of arbitrary size...
- Так в чем же смысл объявления функции API?
- Вызывается ли
param
по значению или по ссылке? - А как мне правильно вызвать эту функцию?