中文版 | English

网站首页 | 个人作品 | 站长日志 | 给我留言 | 经典分享 | 友情链接 | 黑白人生


强制地址调用

(*(void(*) ())0)(); 这是《C Traps and Pitfalls》这本经典的书中的一个例子。

 第一步:void(*) (),可以明白这是一个函数指针类型。这个函数没有参数,没有返回值。
 第二步:(void(*) ())0x46EF01,这是将 0x0046EF01强制转换为函数指针类型, 0x0046EF01是一个地址,也就是说 一个函数存在首地址为 0x0046EF01的一段区域内。
 第三步:(*(void(*) ())0),这是取0 地址开始的一段内存里面的内容,其内容就是保存 在首地址为0 的一段区域内的函数。
 第四步:(*(void(*) ())0)(),这是函数调用。



Copyright 1998-2021. All rights reserved.
工信部备案:冀ICP备19032940号-1|公安部备案号:13020802000209