我正在Linux项目中覆盖C ++全局new/delete运算符。在我的代码中,所有的东西都能正常工作,直到我发现系统库中的new/delete符号也被我的代码替换了!这是一个非常严重的问题,因为它远远超出了我预期的“邪恶程度”。
所以问题是,如何防止链接器/编译器用其他(系统)共享库中的new/delete符号替换它们?更准确地说,如何控制哪些共享库链接来自我的库的符号? 我希望系统库仍然使用它们默认的new/delete实现。特别是当可执行文件稍后加载其他不在我的控制下的可选动态库时,这一点尤为重要。
定制的全局new/delete运算符实现构建在共享库中。
我在互联网上搜索了如何控制动态链接的方法,但没有成功。我首先尝试在测试可执行文件中改变库链接顺序,但结果没有改变。
所以问题是,如何防止链接器/编译器用其他(系统)共享库中的new/delete符号替换它们?更准确地说,如何控制哪些共享库链接来自我的库的符号? 我希望系统库仍然使用它们默认的new/delete实现。特别是当可执行文件稍后加载其他不在我的控制下的可选动态库时,这一点尤为重要。
定制的全局new/delete运算符实现构建在共享库中。
我在互联网上搜索了如何控制动态链接的方法,但没有成功。我首先尝试在测试可执行文件中改变库链接顺序,但结果没有改变。