1. 程式人生 > >C語言(記憶體管理、檔案處理)

C語言(記憶體管理、檔案處理)

  • 記憶體的理解
    計算機記憶體是以位元組為單位進行儲存,每個位元組都有自己的編號即地址(指標)。
    這裡寫圖片描述
    本圖為原始碼
    兩個連在一起的數字為1個位元組其中01 00 00 00 中的兩個連在一起的數為一個位元組,0x00FAFB7C是01的地址,之後的三個位元組的地址值分別遞增1
    這裡寫圖片描述
    上圖中,num[3]為int型,每個元素佔4位元組,地址如圖顯示。

  • 野指標與懸空指標
    野指標:未初始化的指標
    懸空指標:只想的地址被free掉以後未置為NULL的指標

  • 記憶體空間的動態分配:
    1、malloc函式
    malloc函式會在動態儲存區分配一塊記憶體,如果分配成功則返回值為這塊記憶體的首地址,即返回值為指標;如果失敗則返回控制針NULL。函式的引數為分配記憶體的大小(位元組)。
    2、free函式
    free函式將之前分配的記憶體釋放,引數為所分配記憶體的指標。

分配動態記憶體的步驟:
①定義一個指標
②分配一塊記憶體空間指向上面的指標
③用完之後釋放這塊記憶體空間

如:

void *p;
p=malloc(10);//......
free(p);

注:對一個指標應用free之後,它的值不會改變,但它指向了一個無效的記憶體區,為懸空指標。
如果沒有及時釋放某塊動態記憶體,並將他的指標指向別處,則會造成”記憶體洩漏“。

  • 檔案處理
    C語言在stdio.h中定義了一個FILE檔案結構體型別,在C程式中系統對檔案進行的各種操作是通過指向檔案結構體的指標變數來實現的。
    定義一個只想檔案結構體型別的指標變數:
FILE
*p;//p為指標名

1、開啟檔案
fopen函式
在vs中函式名:fopen
返回值 : 檔案指標(代表這一個檔案)
引數列表:
[引數1] : 字串型別,
表示檔案的路徑
[引數2] : 字串型別,
表示開啟檔案的方式
2、關閉檔案
C語言檔案使用完後,應該立即關閉檔案,防止由於誤操作等原因破壞已經開啟的檔案。
使用fclose函式 用法為:fclose(檔案指標)

    FILE*p;
    fopen_s(&p, "D:\\文字.txt", "a");
    if (p == NULL)
    {
        printf("檔案開啟不成功"
); return 0; } fclose(p);

要判斷是否成功打開了檔案