C++ 动态内存分配

动态内存分配(new / delete) ,可类比为C中的malloc和free函数。

但是二者在某些地方有很大的区别。

如new和delete是运算符,malloc new是函数。

malloc的职责仅仅是分配内存,new除了分配内存外,还干一件事,调用构造函数。

所以new !=malloc ,但就分配内存这件事上,new操作符为分配内存所调用函数的名字operator new

void * operator new(size_t size);//參数size_t确定分配多少内存。
返回值类型是void*,由于这个函数返回一个未经处理(raw)的指针。未初始化的内存。(假设你喜欢。你能写一种operator new函数,在返回一个指针之前可以初始化内存以存储一些数值,可是一般不这么做。

从这个层面来说,operator new更像malloc。

operator new干了分配内存,当然还有一个函数帮new干调用构造函数初始化new

先来看new的几个简单使用情况:
       1) 在堆空间分配单个值的空间
            类型 *指针名 = new 类型;
            delete 指针名;

 eg:
            int *pi = new int;
            *pi = 100;
            cout << *pi << endl;
            delete pi;

 2) 在堆空间分配数组空间
            类型 *指针名 = new 类型[元素个数];
           delete []指针名;

int *pi = new int[100];
            pi[0] = 1;
            pi[1] = 2;
            delete []pi;

另一种使用情况:

SeqStack *sq=new SeqStack(64);

要详细理解这种new 和构造函数结合体的使用情况,链接再此:

C++ 中 new 操作符内幕:new operator、operator new、placement new - slgkaifa - 博客园 (cnblogs.com)

 详细理解,底层探究:待补

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值