C 语言 interpositioning 示例代码

《C专家编程》中提到了 interpositioning,即自定义函数如果与库函数名重名可能会导致未定义的行为,为避免发生问题,建议尽量使用 static 关键字将函数作用域约束在本源文件中。

interpositioning 中文资料较少,不知道翻译成中文怎么说(打桩问题?重载?)。在纽约大学网站上找到了一份示例代码,可查看 Index of /~acase/fa14/cs201/demos/interpositioning,示例代码将 interpositioning 分了三类,编译、链接、运行时的interpositioning

interpositioning 示例代码 打包下载,可在 CentOS 7 x86_64 系统上直接编译运行,可使用 locate 定位so库具体位置。

[root@localhost interpositioning]# locate libdl.so
/usr/lib64/libdl.so
/usr/lib64/libdl.so.2
[root@localhost interpositioning]# LD_PRELOAD="/usr/lib64/libdl.so ./mymalloc.so" ./hello

遗留问题:需要研究 LD_PRELOAD,感觉代码里的 printf() 内调用的 free() 不是自定义的 free()

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google+ photo

You are commenting using your Google+ account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.