在 API 头文件中,我发现了一个奇怪的函数声明:
void API_GetParameter(API_SOMESTRUCT param[API_NUM_CONST]);
whereAPI_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
按值调用还是按引用调用? - 以及如何正确调用该函数?