Как вызвать функцию с этим параметром: fun (Ty param [NUM])? - PullRequest
1 голос
/ 21 февраля 2012

В заголовочном файле 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 по значению или по ссылке?
  • А как мне правильно вызвать эту функцию?

1 Ответ

1 голос
/ 21 февраля 2012

Объявление void f(int x[3]); совпадает с void f(int *x); Итак, функция должна получить действительный указатель на API_SOMESTRUCT.В противном случае вы не можете знать, что он собирается делать, сколько элементов он ожидает или что он собирается с ними делать.Вы должны прочитать документацию.

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

API_SOMESTRUCT param[API_NUM_CONST]
API_GetParameter(param);
// use param
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...