zoukankan      html  css  js  c++  java
  • C++学习笔记-new与delete

    C++新增了new和delete关键字,用来开辟内存,对应的就是C语言的malloc和free

    对比new/delete和malloc/free

    malloc和free是库函数,以字节为单位申请堆内存
    new和delete是关键字,以类型为单位申请堆内存
    malloc和free单纯的对内存进行申请与释放
    对于基本类型new关键字会对内存进行初始化
    对于类类型new和delete还负责构造函数和析构函数的调用
    对于基础类型和数组类型,可以混搭,主要是因为实现原理

    new/delete用法

    分配基础类型,分配数组类型,分配对象

    分配基础类型

    malloc分配,free释放

    int *p = (int *)malloc(sizeof(int));
    free(p);
    

    new分配,delete释放

    int *p1 = new int;//相当于声明
    *p1 = 10;
    delete p1;
    
    int *p2 = new int(100);//定义并初始化
    delete(p2);
    

    分配数组类型

    malloc分配,free释放

    int *p = (int *)malloc(10*sizeof(int));  //int a[10];
    p[0] = 1;
    free(p);
    

    new分配,delete释放

    int *p = new int[10];
    p[0] = 1;
    delete []p;
    

    分配对象

    malloc无法分配对象

    Test *p = new Test(1, 2);
    delete p;
    
  • 相关阅读:
    马拉车算法
    E. You 题解(思维)
    马拉车练习2
    The Boomsday Project 题解(玄学dp)
    Journey to Un'Goro 题解(思维+剪枝搜索)
    Black and white 题解(思维+prim)
    Rise in Price 题解(dp+随机数据)
    高斯消元
    马拉车练习1
    概率期望问题
  • 原文地址:https://www.cnblogs.com/cj5785/p/10664736.html
Copyright © 2011-2022 走看看