C++对象模型(八)

一.New,Delete认识:

1.new类对象时候加括号的差别

答:如果是个空类,那么没有区别

2.如果类中有成员变量,则带括号的初始化会把成员变量的有关内存清零,但不是整个对象的内存全部清零

3.当类中有构造函数的时候,加括号和不加都一样(因为编译器把初始化工作都交给你写的构造函数处理了)

二.New内存分配细节探究:

  1. 一块内存的的回收,影响范围很广(前后内存)
  2. 分配内存时,为了记录和管理分配出去的内存,会额外分配一些内存,造成内存的浪费
  3. New操作:
    1. Operator new
      1. Malloc()
    2. A::A()

Delete操作

  1. A::~A()
  2. Operator delete
    1. Free()

注:如果不使用自己重载的operator new/operator delete,使用::new/:: delete

三.定位new(placement new):

1.有placement new,但是没有对应的placement delete

功能:在已经分配的内存中初始化一个对象

  1. 定位new不分配内存,你需要先分配内存
  2. 初始化一个对象

注:手动调用构造函数一般是不可以的

用法:

       New (地址)类类型

四.内存池概念与实现:

  1. 内存池减少malloc的调用次数,也就减少内存的浪费
  2. 实现原理
    1. Malloc申请一大块内存,当需要使用的时候,从中一点一点分配,当内存池内存不够了,再malloc申请一大块内存
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值