1. Trang chủ
  2. » Giáo Dục - Đào Tạo

03 implicit free lists 13 12 tủ tài liệu bách khoa

12 67 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 154,42 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trang 1

¢  

§  

§  

§  

¢  

§  

§  

§  

¢  

¢  

Trang 2

¢  

¢  

¢  

¢  

¢  

Trang 3

¢  

§  

§ 

§  

free(p0) p0 = malloc(4)

p0

Trang 4

¢  

¢  

¢  

§  

¢  

§  

5

5

Trang 5

¢  

§  

¢  

§  

§  

§  

000

Trang 6

¢  

§  

§  

¢  

Trang 7

§  

§  

¢ 

§  

§  

§  

¢ 

§  

§  

p = heap_start;

while ((p < end) && \\ not passed end ((*p & 1) || \\ already allocated (*p <= len))) \\ too small

p = p + (*p & -2); \\ goto next block

Trang 8

¢  

§  

void addblock(ptr p, int len) {

int newsize = ((len + 1) >> 1) << 1; // round up to even

int oldsize = *p & -2; // mask out low bit

*p = newsize | 1; // set new length + allocated

if (newsize < oldsize)

*(p+newsize) = oldsize - newsize; // set length in remaining } // part of block

addblock(p, 4)

Trang 9

¢  

§  

§  

p free(p)

malloc(5)

Trang 10

¢  

§  

§  

void free_block(ptr p) {

*p = *p & -2; // clear allocated bit next = p + *p; // find next block

if ((*next & 1) == 0)

*p = *p + *next; // add to this block if } // not allocated

Trang 11

¢  

§  

§  

§  

Trang 12

¢  

¢  

§  

¢  

§  

§  

¢  

§  

§  

¢  

§  

¢  

all

Ngày đăng: 09/11/2019, 06:41

TỪ KHÓA LIÊN QUAN