C++new和delete操作符-创新互联

C语言中动态内存管理函数:malloc / realloc / calloc / free

创新互联公司执着的坚持网站建设,重庆小程序开发;我们不会转行,已经持续稳定运营十余年。专业的技术,丰富的成功经验和创作思维,提供一站式互联网解决方案,以客户的口碑塑造品牌,携手广大客户,共同发展进步。

C++中动态内存管理操作符:new / new T[N] / delete / delete[]

void TestC()
{
    int* p1 = (int*)malloc(sizeof(int));
    free(p1);

    int* p2 = (int*)calloc(4, sizeof (int));
    int* p3 = (int*)realloc(p2, sizeof(int)*10);
    p2 = NULL;
    free(p3);
}

void TestC++()
{
  //动态申请一个int类型的空间
  int* ptr4 = new int;
  
  //动态申请一个int类型的空间并初始化为666
  int* ptr5 = new int(666);
  
  //动态申请10个int类型的连续空间
  int* ptr6 = new int[3];

  delete ptr4;
  delete ptr5;
  delete[] ptr6;
}

new / delete 操作符均属于运算符重载,调用全局函数 operator new 和 operator delete 非必要不重载。


malloc/free和new/delete的区别

共同点:都是从堆上申请空间,并且需要用户手动释放。

不同点:
1.malloc和free是i函数,new和delete是操作符。

2. malloc申请的空间不会初始化,new可以初始化。
3.malloc申请空间时,需要手动计算空间大小并传递,new只需在其后跟上空间的类型即可,如果是多个对象,中指定对象个数即可。
4. malloc的返回值为void*,在使用时必须强转,new不需要,因为new后跟的是空间的类型。

5. malloc申请空间失败时,返回的是NULL,因此使用时必须判空,new不需要,但是new需要捕获异常。
6.申请自定义类型对象时,malloc/free只会开辟空间,不会调用构造函数与析构函数,而new
在申请空间后会调用构造函数完成对象的初始化,delete在释放空间前会调用析构函数完成空间中资源的清理。(大区别)

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

分享标题:C++new和delete操作符-创新互联
URL链接:https://www.cdcxhl.com/article34/ephpe.html

成都网站建设公司_创新互联,为您提供网站排名外贸建站建站公司企业建站营销型网站建设微信小程序

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

小程序开发