C語(yǔ)言指針操作動(dòng)態(tài)內(nèi)存分配

小樊
83
2024-10-31 11:20:57

在C語(yǔ)言中,動(dòng)態(tài)內(nèi)存分配是一種在程序運(yùn)行時(shí)根據(jù)需要分配內(nèi)存的方法

  1. 使用malloc()函數(shù)分配內(nèi)存:
#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr; // 聲明一個(gè)整數(shù)指針
    int n = 10; // 要分配的內(nèi)存大小

    ptr = (int *)malloc(n * sizeof(int)); // 使用malloc()分配內(nèi)存

    if (ptr == NULL) { // 檢查內(nèi)存分配是否成功
        printf("內(nèi)存分配失??!\n");
        return 1;
    }

    // 使用指針操作動(dòng)態(tài)分配的內(nèi)存
    for (int i = 0; i < n; i++) {
        ptr[i] = i * 2;
        printf("ptr[%d] = %d\n", i, ptr[i]);
    }

    free(ptr); // 釋放動(dòng)態(tài)分配的內(nèi)存
    return 0;
}
  1. 使用calloc()函數(shù)分配內(nèi)存:
#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr; // 聲明一個(gè)整數(shù)指針
    int n = 10; // 要分配的內(nèi)存大小

    ptr = (int *)calloc(n, sizeof(int)); // 使用calloc()分配內(nèi)存并初始化為0

    if (ptr == NULL) { // 檢查內(nèi)存分配是否成功
        printf("內(nèi)存分配失??!\n");
        return 1;
    }

    // 使用指針操作動(dòng)態(tài)分配的內(nèi)存
    for (int i = 0; i < n; i++) {
        ptr[i] = i * 2;
        printf("ptr[%d] = %d\n", i, ptr[i]);
    }

    free(ptr); // 釋放動(dòng)態(tài)分配的內(nèi)存
    return 0;
}

在這兩個(gè)示例中,我們使用malloc()calloc()函數(shù)分別為整數(shù)數(shù)組分配了動(dòng)態(tài)內(nèi)存。注意,在使用指針操作動(dòng)態(tài)分配的內(nèi)存之后,我們需要使用free()函數(shù)釋放內(nèi)存,以避免內(nèi)存泄漏。

0