malloc或_Znwm,我们应该在LLVM IR系统中使用

问题描述 投票:0回答:1

[在LLVM中申请堆中的内存时,我们可以使用malloc,但是IR clang ++编译的c ++代码使用_Znwm_ZdlPv而不是free)。

为什么?我们应该选择哪一个呢?

源代码:

class A {
  public:
  A();
  int a;
};

int main() {
  A *a = new A();
  // delete a;
  return 0;
}

IR代码;

define i32 @main() ... {
  %1 = alloca i32, align 4
  %2 = alloca %class.A*, align 8
  ...
  %5 = call i8* @_Znwm(i64 4) #4
  %6 = bitcast i8* %5 to %class.A*
  invoke void @_ZN1AC1Ev(%class.A* %6)
          to label %7 unwind label %8
  ...
llvm llvm-clang llvm-ir
1个回答
0
投票

[_Znwm代表operator new_ZdlPv代表operator delete):

$ echo _Znwm | c++filt
operator new(unsigned long)
© www.soinside.com 2019 - 2024. All rights reserved.