[英]How to check value of a pointer in C
我正在編寫一個程序,其中指向我正在使用的STR
類型結構的指針STR *pt
(基本上是我想要使用動態內存的STR
結構數組)可能需要一個NULL
值,因為有時我不想存儲任何數組都通過它,所以當我在該指針上使用free(pt)
時,我會遇到分段錯誤。 我想要檢查指針是否具有NULL
值,但是當我檢查if(pt;= NULL) free(pt);
(當指針不是NULL
),條件始終為真,嘗試釋放指針並發生分段錯誤。
有沒有辦法解決這個問題? 另一種比較指針值的方法?
您的支票看起來正確; 如果將非空指針傳遞給堆分配的結構,則 free() 不應失敗。
'pt' 的值從何而來? 你是從 malloc() 得到的嗎?
如果您還沒有,那么可能值得使用 GDB 來驗證 NULL 指針確實會導致您的問題。
您只能在由 malloc、calloc 或 realloc 分配的 memory 上使用 free()。首先您必須為其分配一些 memory 然后檢查
if(pt)
{
free(pt)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.