Visual C++ Compiler generates the following functions.
Decorated Name
Undecorated Name
Meaning
?0
constructor
?1
destructor
?2
operator new
?3
operator delete
?4
operator =
?5
operator >>
?6
operator <<
?7
operator !
?8
operator ==
?9
operator !=
?A
operator []
?B
operator type
?C
operator ->
?D
operator *
?E
operator ++
?F
operator --
?G
operator -
?H
operator +
?I
operator &
?J
operator ->*
?K
operator /
?L
operator %
?M
operator <
?N
operator <=
?O
operator >
?P
operator >=
?Q
operator ,
?R
operator ()
?S
operator ~
?T
operator ^
?U
operator |
?V
operator &&
?W
operator ||
?X
operator *=
?Y
operator +=
?Z
operator -=
?_0
operator /=
?_1
operator %=
?_2
operator >>=
?_3
operator <<=
?_4
operator &=
?_5
operator |=
?_6
operator ^=
?_7
$vftable
compiler-generated “vftable”
?_8
$vbtable
compiler-generated “vbtable”
?_9
“vcall”
?_A
“typeof”
?_B
compiler-generated “local static guard”
?_C
compiler-generated string literal
?_D
__vbaseDtor
compiler-generated “vbase destructor”
?_E
__vecDelDtor
compiler-generated “vector deleting destructor”
?_F
__dflt_ctor_closure
compiler-generated “default constructor closure”
?_G
__delDtor
compiler-generated “scalar deleting destructor”
?_H
__vec_ctor
compiler-generated “vector constructor iterator”
?_I
__vec_dtor
compiler-generated “vector destructor iterator”
?_J
__vec_ctor_vb
compiler-generated “vector vbase constructor iterator”
?_K
$vdispmap
compiler-generated “virtual displacement map”
?_L
__ehvec_ctor
compiler-generated “eh vector constructor iterator”
?_M
__ehvec_dtor
compiler-generated “eh vector destructor iterator”
?_N
__ehvec_ctor_vb
compiler-generated “eh vector vbase constructor iterator”
?_O
__copy_ctor_closure
compiler-generated “copy constructor closure”
?_P
“udt returning”
?_Q
“EH”
?_R
“RTTI”
?_S
$locvftable
compiler-generated “local vftable”
?_T
__local_vftable_ctor_closure
compiler-generated “local vftable constructor closure”
?_U
operator new []
?_V
operator delete []
?_W
“omni callsig”
?_X
__placement_delete_closure
compiler-generated “placement delete closure”
?_Y
__placement_arrayDelete_closure
compiler-generated “placement delete [] closure”
?__A
__man_vec_ctor
compiler-generated “managed vector constructoro iterator”
?__B
__man_vec_dtor
compiler-generated “managed vector destructor iterator”
?__C
__ehvec_copy_ctor
compiler-generated “eh vector copy constructor iterator”
?__D
__ehvec_copy_ctor_vb
compiler-generated “eh vector vbase copy constructor iterator”
It's a function the compiler generates to implement the delete operator. It calls the object's
destructor, then frees the object's memory. If you new and deletearrays of objects, you will see the "vector deleting destructor"instead.
The scalar deleting destructor takes a flag parameter on the stackthat tells it whether or not to free the memory. I seem to recallreading about a bug in some versions of VC++ where, if you usedplacement new to create an object, then explicitly invoked itsdestructor, it would call the scalar deleting destructor, but withoutpushing the flag parameter. This would both mess up the stack, andpseudo-randomly try to free the object's memory.
http://groups.google.com/group/microsoft.public.vc.language/browse_frm/thread/3777c5e8fb844cab?hl=en&lr=&ie=UTF-8&oe=utf-8&rnum=3&prev=/groups%3Fq%3Dscalar%2Bdeleting%2Bdestructor%26hl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3Dutf-8%26selm%3D3343E2DE.7553%40platinum.com%26rnum%3D3
more explanation is at http://www.byteclub.net/blog/zooba/?cat=3
공유하기
URL 복사 카카오톡 공유 페이스북 공유 엑스 공유