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;//释放内存,而且会调用相应的析构函数。