c语言与C++的区别
C语言(使用库函数):
malloc()
free()
C++:
new
delete
区别
1)malloc free 为c语言库函数,new delete 是c++的运算符;
2)在对象的建立与释放上 c++中执行delete运算符时,在释放内存空间之前,自动调用析构函数,完成有关善后清理工作,而c语言中的free 不会
3)c++中推荐使用 new 与 delete ,运算符效率高
相同
对于普通的数据变量 两者差不多
语法规则
new int; 开辟一个存放整数的存储空间
new int(100);开辟一个存放整数的存储空间 把100存进去
数组不可指定初始值
new char[20]; 开辟一个长度为20的字符型数组的存储空间
new int[2][3];开辟一个长度为2*3的二维数组的存储空间
int *p = new int(100);开辟一个存放整数的存储空间 把100存进去, 再在栈中定义一个指针类型p指向它(把开辟的内存地址给p)
delete p;
delete[] p; 释放数组所占空间
代码演示
class Tree
{
private:
int m_ages;
public:
Tree(int ages)
{
m_ages = ages;
}
void grow(int years)
{
m_ages += years;
}
int print_Ages()
{
return m_ages;
}
~Tree()
{
}
};
int main()
{
Tree *p = new Tree(20);
p->grow(30);
cout << p->print_Ages() << endl;
delete p;
Tree *q;
q = new Tree(40);
cout << q->print_Ages() << endl;
delete q;
system("pause");
return 0;
}
异常处理
C++ new内存不足或者其他原因导致内存开辟失败的时候 一般会返回0