Khi đã cấp phát bộ nhớ cho biến, và sau đó tất cả các hành động liên quan tới biến đó đã được thực thi, lúc này biến này không còn giá trị sử dụng nữa. Để tránh tốn tài nguyên RAM trên máy tính ta sẽ cần giải phóng bộ nhớ đó, trong bài viết này chúng ta sẽ tìm hiểu về hàm giải phóng bộ nhớ trong C và C++.
XEM THÊM: Cấp phát bộ trong động C/C++ – malloc, realloc, calloc, new
Giải phóng bộ nhớ trong C
Trong bài viết trước ta có chương trình như sau.
#include <stdio.h>
#include <stdlib.h>
int main(){
int *a;//Khai bao con trỏ a
int n;
printf("Nhap so phan tu: ");
scanf("%d", &n);
a = (int *) malloc(n * sizeof(int));
for(int i = 0; i<n; i++){
printf("a[%d] = ", i);
scanf("%d", &a[i]);
}
printf("\n\nMang vua nhap: ");
for(int i = 0; i<n; i++){
printf("%d ", a[i]);
}
}
Để giải phóng bộ nhớ trong C ta sử dụng hàm free().
Cú pháp
void free(void *ptr)
Vậy để giải phóng bộ nhớ trong trương trình trên ta thêm đoạn code như sau:
#include <stdio.h>
#include <stdlib.h>
int main(){
int *a;//Khai bao con trỏ a
int n;
printf("Nhap so phan tu: ");
scanf("%d", &n);
a = (int *) malloc(n * sizeof(int));
for(int i = 0; i<n; i++){
printf("a[%d] = ", i);
scanf("%d", &a[i]);
}
printf("\n\nMang vua nhap: ");
for(int i = 0; i<n; i++){
printf("%d ", a[i]);
}
free(a); //Giải phóng bộ nhớ cho con trỏ a
}
Giải phóng bộ nhớ trong C++
Trong C++ để giải phóng bộ nhớ ta có thể sử dụng delete.
Cú pháp:
delete ptr
Trong đó: ptr là con trỏ cần giải phóng bộ nhớ.
hoặc nếu con trỏ là một mảng int, hay một mảng chuỗi…hàm delete ta có thể viết như sau:
delete[] ptr
Ví dụ áp dụng
#include <iostream>
using namespace std;
int main(){
int *ptr = new int; //Cấp phát bộ nhớ cho con trỏ ptr
*ptr = 5;
int *ptr1 =new int[3]; //Cấp phát bộ nhớ cho con trỏ ptr1
ptr1[0] = 1;
ptr1[1] = 2;
ptr1[2] = 5;
delete(ptr); //Giải phóng bộ nhứ ptr
delete(ptr1); //Giải phóng bộ nhứ ptr1
cout<<"Da giai phong bo nho thanh cong";
}
Cảm ơn bạn đã đọc hết bài viết!! Đọc thêm bài trước Cấp phát bộ trong động C/C++ – malloc, realloc, calloc, new
[XEM TẤT CẢ BÀI VIẾT CHỦ ĐỀ C/C++ TẠI ĐÂY]