30/09/2018, 16:06

Bàn luận về cấp phát động Free và calloc

Em đọc trong sách thì có ví dụ minh họa này em không hiểu gì cả.Nhờ mọi người giải thích giúp em với.

#define ALLOCSIZE 10000 /* size of available space */
static char allocbuf[ALLOCSIZE]; /* storage for alloc */
static char *allocp = allocbuf; /* next free position */
char *alloc(int n) /* return pointer to n characters */
{
    if (allocbuf + ALLOCSIZE - allocp >= n)   /* it fits */
    {
        allocp += n;
        return allocp - n; /* old p */
    }
    else   /* not enough room */
        return 0;
}
void afree(char *p) /* free storage pointed to by p */
{
    if (p >= allocbuf && p < allocbuf + ALLOCSIZE)
        allocp = p;
}
Nguyễn Minh Dũng viết 18:12 ngày 30/09/2018

Sách nào đây @14520054. Cái này nó chỉ mô tả cách hệ điều hành cấp phát vùng nhớ như thế nào. Cái này anh nghĩ không cần nghiên cứu tại thời điểm này (và không nên đọc code để hiểu).

Nói đơn giản đây là cách hệ điều hành đánh dấu vùng nhớ nào đã được cấp phát, vùng nhớ nào chưa được cấp phát. Giải thích bằng mã giả đơn giản chứ thực tế nó phức tạp hơn rất rất nhiều lần.

BaoLe viết 18:10 ngày 30/09/2018

Trong quyển the c programming đó anh Đạt,phần Address Arithmatic.Nó có đề cập đến malloc và free, lấy code trên để minh họa.

Nguyễn Minh Dũng viết 18:23 ngày 30/09/2018

À, em lướt qua phần đấy đi. Tập trung vào pointer, function pointer và struct ấy. Sau này nó là cái core để em đi tiếp.

Bài liên quan
0