常見的動態記憶體錯誤

2021-07-23 12:17:13 字數 505 閱讀 6680

來自:c

和指標.p223

在使用動態記憶體分配的程式中,常常會出現許多錯誤。這些錯誤包括對null指標進行解除引用操作、對分配的記憶體進行操作時越過邊界、釋放並非動態分配的記憶體、試圖釋放一塊動態分配的記憶體的一部分以及一塊動態記憶體被釋放之後還繼續使用它。以下是一些需要注意的事項:

1、在請求動態記憶體分配時,要檢查所請求的記憶體是否成功分配。

2、操作記憶體時,不要超過動態分配的記憶體的邊界。對分配的記憶體之外的區域進行訪問可能會破壞別的資料,

產生一些莫名其妙的很難發現的bug。

3、傳遞給

free

的指標必須是乙個從

malloc

、calloc

、realloc

函式返回的指標。

4、動態分配的記憶體必須整塊一起釋放,不允許釋放一塊動態分配的記憶體的一部分

(realloc

函式可以縮小一塊動

態分配的記憶體,有效地釋放它尾部的部分記憶體)。

常見動態記憶體錯誤

一 對null指標的解引用操作 void test 二 對動態開闢空間的越界訪問 void test2 for i 0 i 10 i free p 三 對非動態記憶體使用free釋放 void test3 四 使用free釋放一塊動態開闢記憶體的一部分 void test4 五 對一塊動態記憶體多次...

常見動態記憶體錯誤 記憶體洩漏

常見動態記憶體錯誤 編譯器不能自動發現動態記憶體錯誤,動態記憶體錯誤通常只能在程式執行時才能 捉到,而且錯誤原因不容易查詢,錯誤本身也不容易捕捉,改錯難度較大。1.動態記憶體分配失敗卻繼續操作 記憶體不足等有可能導致動態記憶體分配失敗,所以使用new請求分配動態記憶體後一定要檢查返回位址是否為nul...

總結 常見的動態記憶體錯誤

int main malloc開闢的空間足夠大,並且沒有對指標p進行合理的判斷,那麼p有可能是空指標,空指標解引用這種錯誤就在這種情況下很容易出現。int main free p return 0 雖然用malloc動態開闢空間,那也不能太過分呀,只開闢了40個位元組,下面卻訪問了80個位元組,多的...