【发布时间】:2013-10-09 12:06:44
【问题描述】:
一切正常:
#include <stdio.h>
int (* func)(const char * fmt, ...);
int main()
{
func = (void *)0x400420; /* printf pointer */
printf("printf address: %p\n", printf);
func("func() calling\n");
return 0;
}
但这不起作用:
#include <stdio.h>
int (* func)(const char * fmt, ...);
int main()
{
func = (void *)0x400420; /* printf pointer */
/* printf("printf address: %p\n", printf); */
func("func() calling\n");
return 0;
}
我做错了什么?请告诉我。我可以通过指针调用 printf(或其他函数)吗?
【问题讨论】:
-
像这样初始化指针
func=printf; -
您写道,“这不起作用:”,但没有描述如何它不起作用.编译时错误?链接时间错误?运行时崩溃? Nasal Demons?
-
@abelenky 它给了 SIGILL(至少对我来说)。
-
@abelenky,它与 SIGSEGV 一起崩溃。
-
@user2862654 很奇怪,我让它与 SIGILL 一起崩溃。但我也注意到我的
printf地址与你的不同。