tailieunhanh - Lập trình nâng cao trên ngôn ngữ Pascal part 4

Tham khảo tài liệu 'lập trình nâng cao trên ngôn ngữ pascal part 4', tài liệu phổ thông, tin học phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả | 80 Chươĩìịị 4. Kiểu con trỏ thu hổi mảng đã cấp phát I FrreMem p n I cấp phát lại I Write Kich thuoc nang vao 0 de ket thuc Readln n end End. Thu hồi hàng loạt. Có thể thu hồi hàng loạt bắt đầu từ một địa chỉ cấp phát nào đấy thay cho việc thu hổi lẻ tẻ từng vùng. Muốn vậy bạn cần đánh dấu địa chỉ này bằng việc dùng thủ ục Mark var Top pointer . Biến trỏ Top sẽ ghi nhận địa chỉ đỉnh Heap trước khi cấp phát. Sau đấy thủ tục Release var Top pointer sẽ thu hồi tất cả các vùng được cấp phát bắt đầu từ địa chỉ được lưu trong Top cho đến đỉnh Heap hiện tại. Mark Top I đánh dấu vị trí bắt đầu cấp phát Ị các lệnh cấp phát I Release Top I thu hồi các vùng đã cấp phát trong phạm vi từ Mark Top den Release Top . Quản lý Heap Để quản lý vùng Heap unit System có xây dựng một số biến và hàm chuẩn sau đây Var HeapEnd Pointer Biến HeapEnd trỏ tới điểm cuối cùng của Heap được chương trình sử dụng. Var HeapOrg Pointer Biến HeapOrg trỏ tới điểm bắt đầu của Heap được dùng cấp phát động. Các biến HeapEnd HeapOrg được hệ thống khởi gán khi chương trình bắt đầu và không thay đổi giá trị trong suốt quá trình chạy chương trình. Var HeapPtr Pointer Biến HeapPtr trỏ tới đỉnh của Heap tức là đỉnh của vùng nhớ cấp phát động cũng là đáy của vùng nhớ còn tự do . Khởi đầu giấ trị của HeapPtr bằng giá trị của HeapOrg và được phát triển theo một chổng hướng lên. Function MemAvail Longlnt Hàm MemAvail trả lại tống số kích thước tính theo byte của các khối còn tự do trong Heap. Các khối còn tự do không nhất thiết liền kể nhau do hiện tượng phân mảnh. Function MaxAvail Longlnt Hàm MaxAvail trả lại kích thước tính theo byte của khối còn tự do liền nhau lớn nhất trong Heap. Nếu kích thước này nhỏ hơn kích thước xin cấp phát thì sẽ gây ra lỗi tràn Heap khi chạy chương trình. Dưới đây là chương trình minh họa trạng thái của Heap khi cấp phát động Program DemoHeap Type arr array of byte Var pf q Aarr 1 integer Chương 4. Kìểii eón trỏ 81 Top pointer ghi nhận định Heap đề thu hồi hàng loạt .