Hỏi về cấp phát mảng động trong C

#include <stdlib.h>
int main()
{
	int *p,n;
	printf("Nhap so phan tu trong mang  : ");
	scanf("%d",&n);
	p=(int *) calloc(8,sizeof(int));
	for(int i=0;i<n;i++)
	{
		printf("Nhap phan tu thu %d:  ",i);
		scanf("%d",(p+i));
	}
	for(int i=0;i<n;i++)
	{
		printf("Gia tri thu %d : %d \n",i,*(p+i));
	}
	free(p);
}

giả sử mình có chương trìh như trên thì sau khi sử dùng hàm free thì toàn bộ dữ liệu lưu trên vùng nhớ bắt đầu từ con trỏ đến 8 số nguyên tiếp theo sẽ bị xóa khi hệ điều hành dùng đến vùng đó hay sao, nếu như vậy thì hàm free nó sẽ như là 1 cách xóa mảng (thông báo cho hdh biết là có thể sử dùng đc địa chỉ đó và khi hdh cần dùng sẽ xóa) vậy thì mình làm chương trình cần thao tác trên mảng như tính điểm trung bình của sinh viên dùng hàm free nó xóa mất tiêu thì sao có dữ liệu mà làm

Vậy thì bạn phải ghi vào đĩa trước (để rồi đọc lại) chứ :smiley: free() là trả lại mem đúng rồi.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?