通過指向類的null指標呼叫類的成員函式
試圖用乙個null指標呼叫類的成員函式,導致崩潰:
#include
using namespace std;
class a
void
set(int x)
intget() const
};int main()
為什麼會這樣?
通過非法指標呼叫函式,就相當於給函式傳遞了乙個指向函式的非法指標!
但是為什麼pa2->dumb()會成功呢?
因為導致崩潰的是訪問了成員變數!!
使用已經釋放的指標
struct x
;int foo()
使用未初始化的指標
如果你這樣寫,編譯器會提示你使用了未初始化的變數p。
void fooa()
那麼如果我釋放乙個初始化的指標呢?
void foob()
結果是一樣的!!
釋放已經釋放的指標
直接看看**:
void fooa()
這樣的問題也許不會立即使你的程式崩潰,那樣後果更加嚴重!!
沒有呼叫子類的析構函式
之前的部落格講過,父類的析構函式最好宣告為虛!!
parentclass *pobj = new childclass;
...delete pobj;
上述**會造成崩潰,如果父類的析構函式不宣告為虛,那麼不會呼叫繼承類的析構函式,造成記憶體洩露。
記憶體溢位
當我們拷貝字串的時候,我們常常會用到 memcpy函式。這裡特別需要注意的就是字串結尾的null字元:
char *p = (char *)malloc(strlen(str));
strcpy(p, str);
為了躲過這個坑,只需要把 strlen(str) 改為 strlen(str)+1 C 關於指標,繼承和多型介紹
目錄 首先,指標不僅僅是乙個位址,還存在乙個和所指向內容大小相關的值,如下 include using namespace std int main 從執行結果可以看出pa 1,位址增加了4個位元組 pb 1,位址增加了2個位元組 ppa 1,位址增加了2個位元組 而使用void指標指向整型變數a,...
C指標介紹
參考 舉例 int p 整型變數 int p 整型型別的指標 int p 3 整型型別的指標陣列 int p 3 指向整型陣列的指標 int p 指向整型指標的指標 int p int 函式,入參是整型數,返回值是整型數 int p int 函式指標,指向函式的指標,入參是整型,返回值是整型 int...
關於C 的介紹
c 是一種靜態型別的 編譯式的 通用的 大小寫敏感的 不規則的程式語言,支援過程化程式設計 物件導向程式設計和泛型程式設計。注意 使用靜態型別的程式語言是指在編譯時執行型別檢查,而不是在執行時執行型別檢查。ansi 標準 ansi 標準是為了確保 c 的便攜性 您所編寫的 在 mac unix wi...