delete原理問題

有如下代碼(紅色對應彙編):

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 * 型指針。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章