Hỏi về tính chất của cấp phát Bộ nhớ trong C/C++

Em có đoạn code như này:

void main(){
	int *p;
	for (int i = 0; i < 10000; i++){
		p = new int[10000]; 
}
}

khi chạy chương trình thì hệ thống sẽ cấp phát bộ nhớ mới cho mảng p lặp đi lặp lại 10000 lần, và khi chạy hết vòng lặp thì sẽ mất 10000100004byte ô nhớ hay vẫn chỉ tốn 10000*4byte, nghĩa là chỉ cấp phát một lần nhưng địa chỉ ô nhớ đầu tiên được thay đổi liên tục??
không biết hiểu như thế nào mới là đúng ạ.
Em cảm ơn.

Bạn chất không phải là p gán sang biến mới thì bộ nhớ cũ tự giải phóng. Nếu mà như thế thì không còn là C :joy:

Mình chưa hiểu lắm …vậy là bộ nhớ cũ chưa được giải phóng mà hệ thống chỉ cấp thêm vùng nhớ khác đúng không bạn =.=.

Ý Gió nói là C hoặc C++ ko có garbage collection nên cấp phát xong trỏ sang chỗ khác thì vùng nhớ kia vẫn còn và được cấp tiếp vùng mới.

1 Like

à. đã hiểu . mình cảm ơn :grinning:

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