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.
Bài liên quan
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
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.
à. đã hiểu . mình cảm ơn