c++ - Znwm和ZdlPv在汇编中是什么意思?

标签 c++ assembly dynamic dispatch

我是汇编的新手,我想弄清楚 C++ 如何处理汇编中的动态调度。

在查看汇编代码时,我看到有 2 个异常调用:

call _Znwm
call _ZdlPv

这些没有我可以追踪到的子程序。通过检查代码,Znwm 似乎在调用其构造函数时返回对象的地址,但我对此不确定。 ZdlPv 在一段永远无法到达的代码块中(它被跳过了)。 C++:

Fruit * f;
f = new Apple();

x86:

# BB#1:
    mov eax, 8
    mov edi, eax
    call    _Znwm
    mov rdi, rax
    mov rcx, rax
.Ltmp6:
    mov qword ptr [rbp - 48], rdi # 8-byte Spill
    mov rdi, rax
    mov qword ptr [rbp - 56], rcx # 8-byte Spill
    call    _ZN5AppleC2Ev

如有任何建议,我们将不胜感激。 谢谢。

最佳答案

_Znwm 是新的运营商。
_ZdlPv 是运算符删除。

关于c++ - Znwm和ZdlPv在汇编中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47337760/

相关文章:

c++ - 不对其进行操作时变量更改事件的值

c++ - 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

assembly - 在汇编语言中,行 (r3)+ 是做什么的?

assembly - 开始组装,简单的计算器问题

c - 来自 C 程序的汇编代码

ios - 覆盖的 NSManagedObject getter 无法识别

c++ - 为什么类型转换运算符不适用于继承的类?

javascript - 似乎无法使用动态生成的元素 ID

Python plotly 动态图

c++ - 是什么导致我的光线追踪器中出现伪影?