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

Cấp phát bộ nhớ tĩnh (Static Memory Allocation) trong C


Bộ nhớ có thể cấp phát theo 2 cách:

Cấp phát bộ nhớ tĩnh (Static Memory Allocation) trong C

Cấp phát bộ nhớ tĩnh (Static Memory Allocation)

Biến tĩnh được định nghĩa trong một khối bộ nhớ cố định. Một khi cấp phát thì không thể giải phóng.

  • Địa chỉ lấy được bằng toán tử '&' và gán cho con trỏ.
  • Bộ nhớ cấp phát tại thời điểm biên dịch (compile time).
  • Sử dụng stack để quản lý.
  • Kích thước bộ nhớ không thể thay đổi sau khi cấp phát.
  • Kém hiệu quả hơn cấp phát động.

Kích thước biến được xác định trước khi chạy chương trình → gọi là cấp phát tĩnh (còn gọi là cấp phát tại compile-time). Không thể thay đổi kích thước biến đã cấp phát tại compile-time.

Ví dụ 1: Mảng tĩnh

#include <stdio.h>

int main() {
    int a[5] = {10, 20, 30, 40, 50};
    int i;
    printf("Các phần tử mảng: ");
    for (i = 0; i < 5; i++)
        printf("%d ", a[i]);
    return 0;
}

Kết quả ví dụ 1

Các phần tử mảng: 10 20 30 40 50

Ví dụ 2: Tính tổng và tích các phần tử mảng

#include <stdio.h>

void main() {
    int array[5] = {10, 20, 30, 40, 50};
    int i, sum = 0, product = 1;
    
    for(i = 0; i < 5; i++) {
        sum += array[i];
        product *= array[i];
    }
    
    printf("Tổng các phần tử: %d\n", sum);
    printf("Tích các phần tử: %d\n", product);
}

Kết quả ví dụ 2

Tổng các phần tử: 150
Tích các phần tử: 12000000