30/09/2018, 19:59

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.

Gió viết 22:07 ngày 30/09/2018

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

Nguyễn Đăng Quang viết 22:11 ngày 30/09/2018

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 =.=.

*grab popcorn* viết 22:01 ngày 30/09/2018

Ý 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.

Nguyễn Đăng Quang viết 22:05 ngày 30/09/2018

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

Bài liên quan
0