C++ 学习 备忘记录(二)

1、malloc、free 与 new 、delete的区别

首先malloc、free 属于C的一组库函数,new delete 属于C++的一组运算符。 功能都是开辟和释放内存空间。 但是区别在于。new 和delete运算符 在开辟空间的时候会调用类的构造函数和析构函数。 而malloc free 则没有这项功能。(C里面也没有类的概念)

2、C++空类默认产生哪些类成员函数?

编译器自动产生4个函数,默认的 构造函数、析构函数、拷贝构造函数、赋值函数。

3、C++中析构函数可以是内联函数

 

4、C++中的delete 和 delete[] 的区别。

1、对于基本类型(int ,char,float 等),开辟的内存空间,使用两个操作符均可以将内存释放。

char *a=new char[300];

delete a; //or  delete []a; 均可以

2、对于自定义的类的类型,开辟类数组的内存空间后,释放内存要使用delete[], 如果使用delete, 也可以释放内存,但却不会调用类的

     析构函数,导致类内的释放操作不完整。

 

class T;

 

T* t=new T[20];

delete t;//只会调用t[0]的析构函数,其他的对象均释放内存后不调用析构函数。

delete[] t;//释放内存,而且会调用相应的析构函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值