迷途指针也叫失控(wild)指针或悬浮(dangling)指针,是将delete用于指针(从而删除它所指的内存),但没有将它设置为空引发的,如果随后你在没有重新赋值的情况下使用该指针,后果是不可预料的:程序崩溃算你走运。请看实例代码:
- typedef unsigned short int USHORT;
- #include <iostream>
- int main()
- {
- USHORT *pInt=new USHORT;
- *pInt=10;
- std::cout<<"*pInt: "<<*pInt<<std::endl;
- delete pInt; //只是删除该指针指向地址内的内容
- long *pLong=new long; //这里使用的地址是pInt所指向的地址,当然是4字节大小
- *pLong=90000;
- std::cout<<"*pLong: "<<*pLong<<std::endl;
- *pInt=20; //这里的赋值会覆盖pLong所指向地址内的内容的低2字节
- std::cout<<"*pInt: "<<*pInt<<std::endl;
- std::cout<<"*pLong: "<<*pLong<<std::endl;
- delete pLong;
- return(1);
- }
- 输出:
- *pInt: 10
- *pLong: 90000
- *pInt: 20
- *pLong: 65556
不要试图运行以上程序,可能会导致计算机死锁,这只是一个理想的实例。要记住的是,当delete一个指针时,千万记得将其赋空。