Tại sao bộ nhớ chính để phân bổ đối tượng được gọi là 'heap'?


10

Có ai có ý tưởng tại sao khu vực của bộ nhớ chính nơi các đối tượng được phân bổ được gọi là heap. Tôi có thể hiểu lý do căn bản của ngăn xếp LIFO nhưng muốn biết lý do nào cho tên 'heap'.


2
Tôi không có lịch sử hoặc bằng chứng để sao lưu điều này, nhưng tôi muốn đặt ngăn xếp đến trước, và trong tiếng Anh, một đống về cơ bản là phản đề của một ngăn xếp, vì vậy khi một thứ gì đó xuất hiện không phải là một ngăn xếp và không có bảo đảm về cấu trúc, Heap chỉ xuất hiện trong tâm trí của một số người và nó lan truyền như ngôn ngữ có xu hướng ..
Jimmy Hoffa

2
@JimmyHoffa: Có lẽ bạn không ở đâu xa. Vào thời xa xưa (đối với tôi là vào khoảng năm 8086), đống và đống phát triển theo hướng ngược nhau về phía nhau, ngăn xếp phát triển từ dưới cùng (cuối bộ nhớ) lên và đống lớn lên từ đỉnh (bắt đầu bộ nhớ người dùng ) xuống.
Robert Harvey

4
@DeadMG: Đó là lý do tại sao chúng tôi có phiếu bầu này để đóng điều thú vị và cờ người điều hành nếu bạn không có đủ đại diện để bỏ phiếu để đóng. Không có tất cả điều đó, bạn có thể liên kết đến một bản sao ở đây trong các bình luận. Trong mọi trường hợp, tôi đã thực hiện tìm kiếm và không thể tìm thấy bất kỳ bản sao nào.
Robert Harvey

1
Để bỏ phiếu chặt chẽ - Câu hỏi này là về chủ đề. Vui lòng xem câu hỏi Meta gần đây để biết thêm chi tiết. Trớ trêu thay, câu hỏi meta đó đã được liệt kê trong danh sách bản tin cộng đồng của tôi cho câu hỏi này.

Câu trả lời:


7

Từ thông tin được tìm thấy tại StackOverflow - Nguồn gốc của thuật ngữ heap tinh tế cho cửa hàng miễn phí là gì? tại sao hai khái niệm khác nhau đều được gọi là heap tinh?

Thông tin này ít nhất là từ Knuth năm 1975 đề cập đến các tác giả khác (chưa được đặt tên):

Một số tác giả bắt đầu khoảng năm 1975 để gọi nhóm bộ nhớ khả dụng là "đống". Nhưng trong loạt sách hiện tại, chúng tôi sẽ chỉ sử dụng từ đó theo nghĩa truyền thống hơn liên quan đến hàng đợi ưu tiên. (Nghệ thuật lập trình máy tính - Thuật toán cơ bản, tái bản lần thứ 3, trang 435)

Cũng có đề cập đến cuộc thảo luận của Wijngaarden về Algol vào đầu những năm 1970 đề cập đến nhóm bộ nhớ khả dụng dưới dạng một đống ( heaplà một từ dành riêng trong Algol được định nghĩa ở những nơi là "phân bổ một số không gian trống từ vùng heap toàn cầu." - Ngày Algol68 từ năm 1968).

Việc triển khai đống ALGOL 68 từ năm 1970 có thể được sử dụng để theo dõi một số khía cạnh của nguồn gốc từ, mặc dù rất nhiều nếu nó đứng sau một tường thành.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.