Pra*_*tic 7 c++ malloc linker new-operator
查看链接的问题.
接受的答案说明,
"取代malloc会打开一堆蠕虫.它可以完成,但不能移植,因为它需要知道链接器."
为什么替换malloc需要知道链接器以及为什么不替换:: operator new()?
小智 7
标准C++规定了覆盖::operator new.虽然实现肯定是混乱的和链接器相关的,但C++程序可以定义一个不同的::operator new并且它可以工作.C++标准明确指出:程序可以用它们自己的定义(等等各种限制和细节)来代替它们.
malloc另一方面,在普通库中定义的普通函数,C(和C++,就此而言)没有替换像这样的函数的工具.您几乎可以说服阳光下的每个链接器链接到您的libc sansmalloc并解析对malloc来自另一个库/目标文件的某些代码的引用.但是你不能只定义一个不同的malloc函数,因为它违反了一个定义规则:你最终在程序中使用了两个名为"malloc"的函数,这两个函数都被标准禁止(对于非static,非匿名namespace,非inline,...函数)和链接器的严重问题(很可能,错误或两个定义中的一个被删除).