1.内存泄露
上篇提到的内存泄露的含义,因为没有及时释放内存,随着指针的消失引起的计算机找不到(当然也不能利用)这块儿内存空间的情况。
此处的含义原理上相同:
{
int *p;
p=new int;
p=new int;
delete p;
cout<<p<<endl;
}
将p指向了两块儿内存空间,会致使第一块儿内存空间不能用。
2.在堆中创建对象(???与创建堆中空间的不同之处)
将对象保存在堆中,通过指针来访问它。
明了变量与对象之间的差别:
类、对象、成员之间的关系。(范磊老师对这个问题的解释特别到位,一下内容,全部来自范磊老师《从新手到高手C++全方位学习》一书)
“人类就是一个类,他包含很多对象,如张三、李四等人都可以算作人类的对象(即对象是实例化的类)。这些对象都拥有人类共同的功能和数据,如身高、体重、年龄、性别等,另外他们还可以说话、吃饭、喝水、睡觉、思考问题等;我们可以将这些特点看作是人类共有的方法或函数,可将具体化的身高体重这些具体数据看作是人类这一类的成员变量。类是由若干个变量和相关函数组成的,而对象可拥有这些变量和函数。……硬盘是个类,希捷硬盘是该硬盘类的一个对象,型号、容量、转速是该类的数据成员;读取数据和写入数据是该类的方法成员,也叫成员函数;数据成员和成员函数统称为该类的成员。对象拥有并且可以封装这些 成员。”
class A
{
public:
A(){cout<<"构造函数执行中……"<<endl;i=900;}
protected:
private:
int i;
};
int main()
{
A *p=new A;
return 0;
}