Computer >> Máy Tính >  >> Lập trình >> C ++

Malloc () và free () hoạt động như thế nào trong C / C ++?

malloc ()

Hàm malloc () được sử dụng để cấp phát kích thước byte được yêu cầu và nó trả về một con trỏ đến byte đầu tiên của bộ nhớ được cấp phát. Nó trả về con trỏ null, nếu nó không thành công.

Đây là cú pháp của malloc () trong ngôn ngữ C,

pointer_name = (cast-type*) malloc(size);

Đây,

  • pointer_name - Bất kỳ tên nào được đặt cho con trỏ.

  • kiểu đúc - Kiểu dữ liệu mà bạn muốn truyền bộ nhớ được cấp phát bởi malloc ().

  • kích thước - Kích thước của bộ nhớ được cấp phát tính bằng byte.

Đây là một ví dụ về malloc () trong ngôn ngữ C,

Ví dụ

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

int main() {
   int n = 4, i, *p, s = 0;
   p = (int*) malloc(n * sizeof(int));
   
   if(p == NULL) {
      printf("\nError! memory not allocated.");
      exit(0);
   }
   printf("\nEnter elements of array : ");

   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nSum : %d", s);
   return 0;
}

Đầu ra

Đây là kết quả đầu ra

Enter elements of array : 32 23 21 8
Sum : 84

miễn phí ()

Hàm free () được sử dụng để phân bổ vùng nhớ được cấp phát bởi hàm malloc (). Nó không thay đổi giá trị của con trỏ có nghĩa là nó vẫn trỏ đến cùng một vị trí bộ nhớ.

Đây là cú pháp của free () trong ngôn ngữ C,

void free(void *pointer_name);

Đây,

  • pointer_name - Bất kỳ tên nào được đặt cho con trỏ.

Đây là một ví dụ về free () trong ngôn ngữ C,

Ví dụ

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

int main() {
   int n = 4, i, *p, s = 0;
   p = (int*) malloc(n * sizeof(int));

   if(p == NULL) {
      printf("\nError! memory not allocated.");
      exit(0);
   }
   printf("\nEnter elements of array : ");

   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nSum : %d", s);
   free(p);
   return 0;
}

Đầu ra

Đây là kết quả đầu ra

Enter elements of array : 32 23 21 28
Sum : 104