All pastes #12391 Raw Edit

Skudd

public text v1 · immutable
#12391 ·published 2005-05-22 23:57 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]