【问题标题】:Overloaded operator delete in dylib replaces system operator in OSXdylib 中的重载运算符删除替换 OSX 中的系统运算符
【发布时间】:2011-10-10 21:41:57
【问题描述】:

我有一个用 C++ 编写的 dylib,它有一个重载的 operator newdelete

当我的可可应用程序与我的 dylib 链接时,我有一个 BAD_ACCESS_ERROR,因为 Cocoa 尝试使用我的 dylib 中的 operator delete 释放内存。

所以我认为我可以使用 unexported_symbols_list 选项,但 operator delete, delete[], new, new[], new(..) 的修饰名称是什么?

【问题讨论】:

  • 您不能将定义放在未命名的命名空间中以防止导出时出现名称冲突吗?
  • @Konrad,你不能在namespace 中实现operator newideone.com/FIkn1。我也曾经问过一个关于它的问题。

标签: c++ cocoa macos operator-overloading


【解决方案1】:

您可以使用nm 工具从您的库中提取导出的符号,然后使用c++filt 进行解包,并找到与上述运算符相对应的符号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 2017-03-29
    相关资源
    最近更新 更多