现在的位置: 首页 > 综合 > 正文

delete原理问题

2013年10月06日 ⁄ 综合 ⁄ 共 883字 ⁄ 字号 评论关闭

有如下代码(红色对应汇编):

int main()

 char *a=new char(4);

0000000  push        ebp 
00000001  mov         ebp,esp
00000003  sub         esp,8
00000006  push        edi 
00000007  push        esi 
00000008  push        ebx 
00000009  xor         edi,edi
0000000b  xor         ebx,ebx
0000000d  mov         ecx,1
00000012  call        dword ptr ds:[00B45C88h]
00000018  mov         esi,eax
0000001a  mov         edi,esi
0000001c  test        edi,edi
0000001e  je          00000027
00000020  mov         byte ptr [edi],4
00000023  mov         esi,edi
00000025  jmp         00000029
00000027  xor         esi,esi
00000029  mov         ebx,esi 
 delete(a);
0000002b  mov         ecx,ebx
0000002d  call        dword ptr ds:[00B45C84h]
00000033  xor         esi,esi
}
00000035  mov         eax,esi
00000037  pop         ebx 
00000038  pop         esi 
00000039  pop         edi 
0000003a  mov         esp,ebp
0000003c  pop         ebp 
0000003d  ret
   

 

 

问题是delete如何知道该释放几个字节的内存,我们给它的只是一个 void * 型指针。

 

抱歉!评论已关闭.