C指针不慎操作具很强的危险性,使用C++之后,习惯将指针改为使用引用,曾经一度以为引用可以避开C指针的危险性。结果,今天调试程序时,意外发现,指针和引用只是在代码文本中的表示形式不同而已,实际的使用几乎完全一样。虽然无法查看到内存中引用值的具体情况,但是在引用所代表的那个对象被释放之后,引用依然可以访问其成员或者是内存中的地址。
1 int* iPtr = new(10); 2 int& ref = *iPtr; 3 delete iPtr; 4 5 // debug下程序依然可以运行 6 ref = 5;
这小段代码,虽然不起眼,但是对于程序来说,是很大的隐患。