第一个问题:
delete确实已经释放了ps所指向的那块内存,但所谓释放并不是清空,而是把那块内存重新回收到系统中,告诉系统这块内存又可以重新分配了。
delete的时候,系统只是将指针指向的堆空间回收,但是没有将指针变量的值赋值为null,也就是说指针还是指向原来的堆空间,但是这个空间已经失效。如果继续访问的话将是一个未定义的行为,可能崩也可能不崩
第二个问题:
简单地说,就是编译器选择这么做,但标准并不规定如此
局部变量是分配在栈上,地址是栈指针的一个偏移量。栈就那么大,不可能循环一万次就给分配一万个地址。反正上次循环和下次循环也不冲突,上次用完了下次接着用。