首页 > 代码库 > 堆的首地址和堆的指针

堆的首地址和堆的指针

 1 #include "stdafx.h" 2 #include "iostream" 3  4 using namespace std; 5  6 class CStu 7 { 8 private: 9     int M_Id;10     int M_Age;11 public:12      void set(int x)13      {14          M_Id = x;15      }16 17 };18 19 int main(int argc, char* argv[])20 {21     CStu *p = new CStu;        //在堆中创建一块可以存储CStu类的内存空间,并用指针p指向这块内存空间的首地址.22                                //因为创建的这个堆的类型是CStu型.所以指针的类型也是CStu型.23     cout << p << endl;         //打印出的是这个申请的堆的首地址.这个地址每次编译后都不一样的.24     cout << &p << endl;        //打印了存放堆地址的这个内存的单元编号.25 26 //---把这个堆的指针消除掉----27     delete p;28     cout << p << endl;        //删除这个指向堆的指针以后,每次运行,p里面的值得都会改变,有不确定性.29                             //所以说在这样的情况下,这个p绝对是个迷途指针.30                             //如果还想找回刚才那个堆的首地址,那是不可能的事,所以一定要注意什么时候用delete.31 32     cout << &p << endl;        //p还是存在的,并且p的地址一直没改变,只是p里面的内容再不断改变而已.33 34     return 0;35 }

 

堆的首地址和堆的指针