STDIO
Tìm kiếm gần đây
    Nội dung
    0
    0
    Chia sẻ
    Nội dung
    0
    0
    Chia sẻ

    Tối Ưu Hóa - Quản Lý Bộ Nhớ Nhỏ và Phân Mảnh

    Hướng dẫn tạo hệ thống tự cấp phát và thu hồi bộ nhớ dành cho bộ nhớ nhỏ và phân mảnh.
    19/09/2014 26/09/2020 2 phút đọc
    Tối Ưu Hóa - Quản Lý Bộ Nhớ Nhỏ và Phân Mảnh

    Giới thiệu

    Khi làm việc với các thiết bị có bộ nhớ lớn như PC, Smartphone, trừ các ứng dụng đòi hỏi bộ nhớ lớn như đồ họa, game hoặc ứng dụng giải trí, thông thường sẽ không gặp vấn đề về bộ nhớ, nhưng khi làm việc với các thiết bị có bộ nhớ khiêm tốn, thông thường sẽ bị thiếu bộ nhớ và đôi khi đủ bộ nhớ nhưng bị phân mảnh dẫn đến không cấp phát được.

    Ý tưởng bài viết này nhằm:

    • Biết thêm 1 trong vô vàn phương pháp tối ưu và quản lý bộ nhớ.
    • Hiểu biết thêm về cơ chế cấp phát động.

    Đặt vấn đề

    Trong ngôn ngữ lập trình C/C++, để cấp phát và thu hồi 1 vùng nhớ động cần sử dụng hàm mallocfree hoặc newdelete.

    Ví dụ Cat *cat = (Cat*) malloc(sizeof(Cat));

    Vấn đề nảy sinh

    Giả sử màu vàng là vùng đã cấp phát, 1 ô vuông là 1 byte.

    Cấp phát thu hồi dẫn đến bộ nhớ không được liên tục

    Như hình trên, vùng màu trắng là vùng chưa cấp phát, vùng màu vàng là vùng đã cấp phát. Nế có nhu cầu cấp phát thêm 5 bytes, theo nguyên tắc của cấp phát thì 5 bytes này phải liên tục nhau nên dù tổng của bộ nhớ đủ chứa (9 bytes) nhưng cấp phát vẫn thất bại.

    Các khoảng trống (phân mảnh) là hệ quả của việc cấp phát cấp phát dữ liệu và thu hồi.

    * Bài viết chưa hoàn thiện và đang cập nhật.

     

    Bài chung series

    0 Bình luận
    Modern C++

    Modern C++

    STDIO Training - Đào Tạo Lập Trình C++.

    Khi bạn nhấn vào sản phẩm do chúng tôi đề xuất và mua hàng, chúng tôi sẽ nhận được hoa hồng. Điều này hỗ trợ chúng tôi có thêm kinh phí tạo nhiều nội dung hữu ích. Tìm hiểu thêm.
    STDIO

    Trang chính

    Công ty TNHH STDIO

    • 30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
      +84 28.36205514 - +84 942.111912
      developer@stdio.vn
    • 383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
      Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012
    ©STDIO, 2013 - 2021