一尘不染

重载free(),因此我的程序使用的是我的而不是系统的

linux

我需要free()出于教育目的对功能进行重新编码,并且还必须命名free()

当我重命名我的函数时,myfree()它可以正常工作,但是当我命名它时,free()该程序不知道他是否需要使用我的或系统的,Segmentation fault(core dumped)即使我没有调用我的免费程序,该程序也是如此(只是另一个free()func 的声明似乎崩溃)

所以我怎么告诉编译器使用我的而不是系统的呢?

预先谢谢你。

编辑:Linux操作系统


阅读 217

收藏
2020-06-07

共1个答案

一尘不染

基本上,您可以看到三个选项

  • 在编译时重定向它,例如使用#define@Mohamed建议的方法。
  • 在运行时使用LD_PRELOAD进行更改。
  • 使用malloc hooks修改现有的malloc / free 。
2020-06-07