如何通过C中的地址调用函数

时间:2017-11-12 19:27:56

标签: c pointers

我需要调用函数(calloc),但是我必须通过存储在DWORD中的这个函数的内存地址来调用它。该函数有两个int参数。我认为Calloc应该返回指针。我试过这样的事情

//global var
DWORD addressOfFunction; 
typedef void(*originalAddress)(int, int);

int main(){
originalAddress tmp = (void *)addressOfFunction;
    tmp(x, y);
}

有人可以解释我,我犯了错误吗?我的解决方案不正确。

1 个答案:

答案 0 :(得分:0)

您的typedef错了。更好的是

typedef void* (*originalAddress)(int, int);

你的演员也是错的。 void*是数据指针,而不是函数指针。使用强制转换为void* (*)(int, int),甚至更好地使用originalAddress