c 裡面由淺拷貝引起的懸掛指標

2021-06-19 08:03:07 字數 621 閱讀 5873

懸掛指標一般是由於指向該位址的指標突然指向了別的地方, 但是在改變這個指向之前沒有對該位址裡面的內容撤銷, 導致該內從位址裡面的資料沒法再被使用但同時卻一直存在, 造成記憶體洩露

這裡討論的是淺拷貝引起的懸掛指標問題, 淺拷貝一般是自己沒有定義拷貝建構函式和過載 = 引起的, 所以當你的類中有

了指標或者陣列的時候一定要自定義上面的兩個函式, 當然類中有自定義型別的時候也要注意用上免的兩個函式

**如下:

/*

coding by: ygqan

in : 2013/11/22

目的 : 演示如果避免懸掛指標

*/#include #include #include #include #include using namespace std;

class string //此處必須初始化為空

string(char *s)

string(const string& s)

~string()

string &operator = (const string &t)

public:

char *ptr;

};int main()

由返回區域性指標問題引起的思考

我們大家都知道指標函式的返回指標不能指向函式內的自動變數,如果需要返回函式的內部變數的話,就需要將該變數宣告為靜態變數。為什麼函式能夠返回靜態變數的位址而不能返回區域性自動變數的位址,到底什麼樣的物件能夠返回其位址,而什麼樣的物件不能夠返回其位址?靜態變數與區域性自動變數的主要區別是什麼?要想明白這...

由C 類指標初始化引起的問題彙總

還是得從最近乙個比較 詭異 的問題說起 c 類指標定義的時候沒有初始化的時候,居然可以安全的呼叫類內部的成員函式而不出錯。這段 是 於之前專案,然後我把問題抽離出來,另開乙個工程測試的時候,還是這個結果,最開始以為是vc編譯器的問題,最後跑到mac下用gcc編譯的結果依舊,說明這不是偶然現象,此時我...

由ArrayList引發的關於淺拷貝的認知誤區

首先,無論深拷貝還是淺拷貝,拷貝的結果,都是乙個新的物件!但是,淺拷貝對於二級目錄中引用型別,都是直接拷貝引用,而非開闢新記憶體。arraylist是淺拷貝的。這裡的淺拷貝,指的是 arraylist拷貝的結果,是乙個新的arraylist,但是新arraylist中的成員,都是老arraylist...