這個程式故意創建了一個迷途指針:
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 ;
*pIong = 90000 ;
std::cout << "*pLong:" << *pLong << endl ;
*pInt = 20 ;
std::cout << "pInt:" << *pInt << std::endl ;
*pInt = 20 ;
std::cout << "*pInt:" << *pInt << endl ;
std::cout << "*pLong:" << *pInt << endl;
delete pLong ;
return 0 ;
}
輸出:
*pInt:10
*pLong:90000
*pInt:20
*pInt :65556
pInt聲明為一個USHORT指針,並將其指向使用new分配的記憶體,將10存儲到pInt指向的記憶體中,對指針使用delete後,pInt將成為一個迷途指針。
接著聲明了一個新的指針pLong,它指向new分配的記憶體,將90000存儲到pLong指向的記憶體中。它指向的是pInt原來指向的記憶體塊,帶來麻煩的是 pInt = 20,它將20賦值到pInt原先指向的記憶體,(pInt被釋放後不再指向任何合法的記憶體,它仍可能指向原來的記憶體塊)將覆蓋pLong指向的記憶體。這被稱為重踏指針,它通常是使用迷途指針產生的不幸後果。
總之。對指針使用delete後就不要再使用它。雖然這個指針仍指向原來的記憶體區域,但編譯器可能已經將其他數據存儲在這裡。不重新給這個指針複製就再次使用它可能導致程式崩潰;更糟糕的是,程式可能表面上運行正常但是過不了幾分鐘後就崩潰了。這被稱為定時炸彈,可不是好玩的。為了安全起見,刪除指針後,
把其設定為空.這樣便解除了它的武裝。
相關詞條
-
神秘之旅[冒險遊戲,同名小說]
在吊桶下的小圓盤上的指針指向其中一個刻度後,按下吊桶上的按鈕,後面牆上的洞裡...
遊戲信息 遊戲背景 完全攻略 小說 -
程式設計師面試寶典(第4版)
767.5 迷途指針 797.6 指針和句柄... 61第7章 指針與引用63指針是C系語言... 指針基本問題 637.2 傳遞動態記憶體...
書本簡介 書本目錄 書本試讀 作者簡介 媒體評論 -
程式設計師面試寶典
指針基本問題 577.2 傳遞動態記憶體 657.3 函式指針 717.4指針數組和數組指針737.5 迷途指針 777.6 指針和句柄 79第... 426.4 內聯函式和宏定義 55第7章 指針與引用 57指針是C系語言...
編輯推薦 內容簡介 主要特點 圖書目錄 -
現代程式設計師面試寶典
指針基本問題 61 7 2 傳遞動態記憶體 63 7 3 函式指針 72 7 4 指針數組和數組指針 74 7 5 迷途指針...和宏定義 59 第7章 指針與引用 61 指針是c系語言的特色...
基本信息 編輯推薦 內容簡介 目錄 前言 -
天梭
梭推出了一款帶有指針和數字兩種顯示方式的腕錶,命名為天梭TsX。它是為...
發展歷程 品牌文化 旗下產品 贊助賽事 信息 -
《仁醫》[《仁醫》電視劇系列]
第一部劇情簡介這部知名漫畫家村上本加的作品,主人公腦外科醫生南方仁從現代穿越時空回到古代幕府,運用現代的醫療技術拯救了許多江戶人...
第一部 第二部 -
仁醫[仁醫電視劇系列]
第一部劇情簡介這部知名漫畫家村上本加的作品,主人公腦外科醫生南方仁從現代穿越時空回到古代幕府,運用現代的醫療技術拯救了許多江戶人...
第一部 第二部 -
陸上百慕達
有些忐忑不安起來,因為發現所帶的國產流體指南針不是那么老實,指針一個勁兒地...
1俄羅斯利雅迪三角鬼谷 2美國內華達州三角神秘區 3中國四川眉山市洪雅縣瓦屋山迷魂凼 -
問情ol
迷途的我 李新柔 交談 點擊任務界面的“去交任務”,就可以找到曼文...
背景設定 角色設定 特色系統 遊戲評價 操作指南