當無效指針或智能指針被解除引用時,代碼崩潰。添加斷言以幫助查找問題。例如,如何自動添加指針解引用的保護措施?
Type* p = NULL; // Always initilize to be null.
assert(p); // Add before dereferencing to help to find the problem.
p->f(); // Crashes if p is invalid.
我的問題是如何解引用指針時自動添加斷言。例如,
#define PTR_RUN(p, f) assert(p); p->f;
這有效,但不易讀,可能會有一些隱藏的問題,因爲不小心使用了宏。有更好的方法嗎?謝謝。
他們是不同的。如果你的情況,p可以是有效的或無效的。這兩種情況都必須在包含函數中處理。在我的情況下,p被斷言總是有效的。斷言用於查找代碼錯誤。 – user1899020 2013-02-23 18:21:52
@ user1899020一個不會簡單地檢測到無效的非NULL指針。 – 2013-02-23 18:23:14