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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值