new delete malloc free

最近看了本书,effictive c++,里面讲了new ,说delete 数组的时候一定要加[],说不加编译器就不知道这是个数组

感觉有点莫名其妙

malloc free这一套c函数,为啥就没有free []的用法呢?暂时理解不了,等以后有时间再来看

 

写了段小代码

    char *p = new char[12];
    strcpy(p,"hello");
    delete []p;
    p = (char *)malloc(12);
    strcpy(p,"hello2");
    free(p);

 

ida后发现

void *__cdecl malloc(size_t Size)
{
  return (void *)_nh_malloc(Size, dword_4084D8);
}
int __cdecl operator new(unsigned int a1)
{
  return _nh_malloc(a1, 1);
}

 

delete

void __cdecl sub_40118B(int lpMem)
{
  sub_401070(lpMem);
}

 

free

  sub_401070((int)v5);
可见最起码在内置类型上,delete就是调用free,自然也不应该存在[]一定要加的理由了

因此可以说在内置类型上,delete []和delete效果相同,编译出的二进制代码完全相同也证明了这点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值