Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Ví dụ chương trình cấp phát bộ nhớ động (malloc) trong C

Bài toán

Hiển thị và tính tổng n số do người dùng nhập, sử dụng cấp phát động để tránh lãng phí bộ nhớ.

Giải pháp

Dùng malloc() cấp phát, free() giải phóng. Kiểm tra con trỏ NULL sau cấp phát.

Chương trình

#include <stdio.h>
#include <stdlib.h>

void main() {
    int numofe, i, sum = 0;
    int *p;

    printf("Nhap so phan tu: ");
    scanf("%d", &numofe);

    // Cấp phát động
    p = (int *)malloc(numofe * sizeof(int));
    if (p == NULL) {
        printf("Khong du bo nho");
        exit(0);
    }

    printf("Nhap cac phan tu:\n");
    for (i = 0; i < numofe; i++) {
        scanf("%d", p + i);       // tương đương &p[i]
        sum = sum + *(p + i);
    }
    printf("\nTong cac phan tu la %d", sum);

    free(p); // giải phóng bộ nhớ
    printf("\nHien thi vung nho da giai phong:\n");
    for (i = 0; i < numofe; i++)
        printf("%d\n", p[i]); // giá trị rác
}

Kết quả

Nhap so phan tu: 4
Nhap cac phan tu: 23 45 67 89
Tong cac phan tu la 224
Hien thi vung nho da giai phong:
7410816
0
7405904
0