cuốn sách gpt4 ai đã làm

c - 带有静态堆的小块内存分配器(典型值 <= 16 字节,稀有值 >= 64 字节,最大值 = 192)

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 03:53:42 28 4
mua khóa gpt4 Nike

Bộ cấp phát này sẽ được sử dụng trong một hệ thống nhúng có bộ nhớ tĩnh (tức là không có vùng heap hệ thống nào, vì vậy "heap" sẽ chỉ là "char heap[4096]")

Dường như có rất nhiều "bộ cấp phát bộ nhớ nhỏ" xung quanh, nhưng tôi đang tìm một bộ có thể xử lý các khoản phân bổ rất nhỏ. Tôi đang nói về kích thước thông thường là 16 byte, với mức sử dụng CPU và bộ nhớ nhỏ hơn.

Xem xét rằng kích thước phân bổ thông thường <= 16 byte, phân bổ hiếm <= 64 byte và phân bổ "một trong một triệu" lên tới 192 byte, tôi chỉ muốn chia 4096 byte này thành 255 trang, mỗi trang 16 byte có một bitmap và con trỏ "khối miễn phí tiếp theo". Do đó, nếu có bộ nhớ thì không có tìm kiếm nào được thực hiện nhưng khối thích hợp sẽ được đánh dấu và hàm trả về con trỏ. Chỉ sau khi đến điểm cuối, nó mới tìm kiếm một khe thích hợp có kích thước được yêu cầu. Do tính chất của hệ thống, các khối cũ hơn "nên" được giải phóng khi "khối trống tiếp theo" đạt đến cuối "đống".

Vì thế,

Có ai biết nếu một cái gì đó như thế này đã tồn tại? Nếu không, có ai có thể bác bỏ lý thuyết của tôi không? Hoặc, họ có thể đưa ra đề xuất tốt hơn không?

Chỉ có C, không có C++. (Toàn bộ ứng dụng phải vừa <= 64KB, hiện tại đồ họa khoảng 40K...)

câu trả lời hay nhất

OP: Có ai có thể bác bỏ lý thuyết của tôi không?

Trong khi đọc nửa đầu, tôi đã nghĩ ra giải pháp sử dụng mảng bit để ghi nhật ký mức sử dụng và đã nghĩ ra một cách hiệu quả điều tương tự như bạn đã nêu trong nửa sau.

Vì vậy, đây là nơi có lỗ hổng: tránh thực hiện khối 16 bitcứngmã hóa. Cho phép ảnh bitmap của bạn sử dụng khối 20 hoặc 24 byte khi bắt đầu phát triển. Trong thời gian chờ đợi, bạn có thể muốn đặt thông tin nhãn và điểm canh gác trên các cạnh của khối. Do đó, bạn có thể dễ dàng theo dõi các lượt free() gấp đôi, các mục đích sử dụng ngoài phân bổ, v.v. Tất nhiên, sự đánh đổi là một nhóm hiệu quả nhỏ hơn.

Sau giai đoạn gỡ lỗi, hãy tự tin sử dụng giải pháp 16 byte.

Đảm bảo theo dõi 0 <= tổng phân bổ <= (2048 - chi phí chung) và cho phép kiểm tra nó dựa trên bitmap của bạn.

Để gỡ lỗi, hãy cân nhắc việc điền các khối được giải phóng bằng "0xDEAD", v.v. để giúp thực thi các lỗi sử dụng miễn phí ngoài ý muốn.

Về c - bộ cấp phát bộ nhớ khối nhỏ có heap tĩnh (điển hình <= 16 byte, hiếm >= 64 byte, max = 192), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/18796036/

28 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress