1、你的指针在delete以后,指针变量自身被销毁了(也即使说指针变量本身不在占据内存空间),但是其所指向的clock内容仍然还在占据内存空间,这时用ptr=NULL使其指向空就ok了。而clock内容是赋在栈上的,在引用范围外会自动销毁。
2、int *p = new int(5);你的5是初始化int还是给int建立数组,从你后面的来看是建立数组,那么就应该是int *p = new int[5];这样就行了
delete ptr之后,ptr成了“野指针”,如果此时不把ptr设置为NULL,会让人误以为p是个合法的指针,原来所指的那块内存还在,它已经没有使用权限,这块内存会等着被其他操作覆盖掉。如果你使用ptr->print()时还能正常,说明此时此刻还没有被覆盖。所以最好在delete ptr之后,同时把ptr设置为NULL,以防止错误使用。