C++:new与delete

C++的new和delete关键字

其对自定义内省申请动态内存的操作是很简单的,我们直接看如下对自定义类型的操作。
区别于C语言的是,
new来申请自定义空间,会去调用构造函数
delete删除也会主动调用析构函数。

class A{
public : 
    A(int a)
    :_a(a)
    {
        cout<<"A(int a)"<<endl;
    }
    A(const A& a1)
    :_a(a1._a)
    {
        cout<<"A(const A& a1)"<<endl;
    }
    ~A()
    {
        cout<<"~A"<<endl;
    }
private :
int _a = 0;
};

template<class T1,typename T2>
void func(T1 a,T2 b)
{
    return a+b;
}
int main(){
    A* a = new A[5]{1,2,3,4,5};
    delete []a;

    char* aa = new char[100];
    delete aa;//这种情况,既不会存在内存泄漏,也不会报错。但是用这种就不好
    return 0;
}

因此有一种操作
类的内部禁用掉对应的operator new和operator delete那么,对这个类你就不能使用new和delete了

void* operator new(size_t size) =delete;
 void operator delete(void* p)=delete;

new和delete实际都是调用的operator new和operator delete.
operator new:C++用来申请空间的。
operator delete:C++用来释放对应的空间。

定位new

定位new表达式是在已分配的原始内存空间中调用构造函数初始化一个对象。
使用格式:
new (place_address) type或者new (place_address) type(initializer-list)
place_address必须是一个指针,initializer-list是类型的初始化列表
使用场景:

定位new表达式在实际中一般是配合内存池使用。因为内存池分配出的内存没有初始化,所以如果是自定义类型的对象,需要使用new的定义表达式进行显示调构造函数进行初始化。

相关推荐

  1. C++:newdelete

    2024-04-12 15:22:04       18 阅读
  2. c++的newdelete

    2024-04-12 15:22:04       33 阅读
  3. MySQL:drop、deletetruncate区别

    2024-04-12 15:22:04       35 阅读
  4. c++中的newdelete

    2024-04-12 15:22:04       46 阅读
  5. 【SQL】delete truncate 命令的区别

    2024-04-12 15:22:04       38 阅读
  6. 【mysql】drop、deletetruncate的区别

    2024-04-12 15:22:04       22 阅读
  7. drop、deletetruncate的区别

    2024-04-12 15:22:04       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-12 15:22:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-12 15:22:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-12 15:22:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-12 15:22:04       20 阅读

热门阅读

  1. 松散子序列(c++实现)

    2024-04-12 15:22:04       14 阅读
  2. docker 容器迁移

    2024-04-12 15:22:04       12 阅读
  3. 什么是高防IP,使用场景和具体实例

    2024-04-12 15:22:04       14 阅读
  4. 飞腾D2000/E2000 openEuler Embedded 用户使用手册

    2024-04-12 15:22:04       14 阅读
  5. 富格林:着重正规技巧阻挠上当

    2024-04-12 15:22:04       14 阅读
  6. PHP现成相亲小程序开发源码案例

    2024-04-12 15:22:04       36 阅读
  7. hdparm 命令 - 关闭磁盘写缓存

    2024-04-12 15:22:04       53 阅读
  8. MySQL笔记6多表查询

    2024-04-12 15:22:04       52 阅读