动态分配内存到函数指针数组时出错

时间:2016-02-08 11:04:17

标签: c

int kpSize = 4;
int kpIdx = 0;

typedef int (*EventHandler) (void *);

EventHandler *keyFuncArray = (EventHandler *) malloc(sizeof(EventHandler) * kpSize);

我在编译时收到以下错误,错误C2099:初始化程序不是常量在下一行

EventHandler *keyFuncArray = (EventHandler *) malloc(sizeof(EventHandler) * kpSize);

2 个答案:

答案 0 :(得分:3)

您不能使用malloc全局变量初始化。

你必须写,例如:

EventHandler *keyFuncArray;

int main ()
{
    keyFuncArray = malloc(sizeof(EventHandler) * kpSize)

   // STUFF:..

   return 0;
}

另请参阅:Do I cast malloc return?

答案 1 :(得分:2)

您只能在全局范围内执行声明。因此函数调用不能在全局范围内执行。由于malloc()也是一个函数调用,它无法执行。

因此,您可以声明全局指针变量并在任何函数中初始化它(仅限于main)。由于指针是全局的,因此在初始化到任何函数之后它都是全局可用的。