把0x100000强制转换为对应ptr的地址指针, 应该是 void * 0x100000
^ 恕我没看懂,不过我猜想要表达的意思是错的
((void (*)())0x100000)() 大概可以利用define改写成下面的形式
#define FUNCTION_POINTER_TYPE void (*)()#define ADDRESS_AS_FUNCTION (FUNCTION_POINTER_TYPE)0x100000
#define PARENTHESISED_FOR_CLEAR (ADDRESS_AS_FUNCTION)
PARENTHESISED_FOR_CLEAR()
没细看LZ的问题((void (*)())0x100000)()
这个的确是合法的,只要内存0x100000是可执行且其中的程序是正确的就可以运行
而
*((void (*)())0x100000)()
应该是错误的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)