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

Giải thích hàm malloc() trong lập trình C


Đề bài

Viết chương trình C hiển thị và cộng các phần tử dùng hàm cấp phát bộ nhớ động.

Giải pháp

Trong C, hàm thư viện malloc cấp phát khối bộ nhớ tính bằng byte tại runtime. Trả về con trỏ void trỏ đến địa chỉ cơ sở của bộ nhớ đã cấp phát, để bộ nhớ chưa khởi tạo.

Cú pháp

void *malloc(size_t size_in_bytes)

Ví dụ:

  • int *ptr; ptr = (int*)malloc(1000);
  • int *ptr; ptr = (int*)malloc(n * sizeof(int));

Lưu ý: Trả về NULL nếu không đủ bộ nhớ.

Chương trình mẫu

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

void main() {
    int numofe, i, sum = 0;
    int *p;
    
    printf("Nhập số lượng phần tử: ");
    scanf("%d", &numofe);
    
    // Cấp phát động
    p = (int*)malloc(numofe * sizeof(int));
    
    // Kiểm tra cấp phát thành công
    if (p == NULL) {
        printf("Không đủ bộ nhớ\n");
        exit(0);
    }
    
    printf("Nhập các phần tử:\n");
    for(i = 0; i < numofe; i++) {
        scanf("%d", p + i);
        sum += *(p + i);
    }
    
    printf("\nTổng các phần tử: %d\n", sum);
    
    free(p);  // Giải phóng bộ nhớ
    
    printf("\nHiển thị vùng nhớ sau khi free:\n");
    for(i = 0; i < numofe; i++) {
        printf("%d\n", p[i]);  // Giá trị rác
    }
}

Kết quả chạy

Nhập số lượng phần tử: 5
Nhập các phần tử:
23 45 65 12 23
Tổng các phần tử: 168
Hiển thị vùng nhớ sau khi free:
10753152
0
10748240
0
23