All pastes #12392 Raw Edit

Skudd

public text v1 · immutable
#12392 ·published 2005-05-22 23:59 UTC
rendered paste body

Initialize the queue: 1024 bytes

    --------------------------------------------------------------------
    |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|
    --------------------------------------------------------------------
    0                        mem_queue->m_queue[0]                  1024
    
Allocate 12 bytes

    Resize ->m_queue[0]
    
    --------------------------------------------------------------------
    |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|    |
    --------------------------------------------------------------------
    0                        mem_queue->m_queue[0]             1012     1024
    
    Add a block at ->m_queue[1]
    
    --------------------------------------------------------------------
    |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|AAAA|
    --------------------------------------------------------------------
    0                        mem_queue->m_queue[0]             1012  ^  1024
                                                                     |-mem_queue->m_queue[1]

Allocate 4 bytes

    Resize ->m_queue[1]
    
    --------------------------------------------------------------------
    |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|  |AAAA|
    --------------------------------------------------------------------
    0                        mem_queue->m_queue[0]         1008      ^  1024
                                                                     |-mem_queue->m_queue[1]

    Add a block at ->m_queue[2]
    
    --------------------------------------------------------------------
    |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|BB|AAAA|
    --------------------------------------------------------------------
    0                        mem_queue->m_queue[0]         1008 ^    ^  1024
                                                                |    |-mem_queue->m_queue[1]
                                                                |-mem_queue->m_queue[2]

Free 12 bytes

    --------------------------------------------------------------------
    |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|BB|    |
    --------------------------------------------------------------------
    0                        mem_queue->m_queue[0]         1008 ^       1024
                                                                |    
                                                                |-mem_queue->m_queue[2]

    Shift ->m_queue[2] to the end and label as ->m_queue[1]
    
    --------------------------------------------------------------------
    |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|    |BB|
    --------------------------------------------------------------------
    0                        mem_queue->m_queue[0]         1008      ^ 1024
                                                                     |    
                                                                     |-mem_queue->m_queue[2]
    
    Add the 12 bytes back to ->m_queue[0]
    
    --------------------------------------------------------------------
    |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|BB|
    --------------------------------------------------------------------
    0                        mem_queue->m_queue[0]              1020 ^ 1024
                                                                     |    
                                                                     |-mem_queue->m_queue[2]