class memory_alloc: def __init__(self,size): self.ChunkSize = 16 self.MemSize = size self.NChunks = self.MemSize / self.ChunkSize self.freemap=[] for i in range(self.NChunks): self.freemap.append(0) def __str__(self): res="" for i in range(self.NChunks): if self.freemap[i]: res=res+chr(self.freemap[i]) else: res=res+"." return res def allocate(self,n,flag): for i in range(self.NChunks): if self.freemap[i]==0: c = n-1; j=i+1; ok=1 while (c>0) & (ok==1): if j>=self.NChunks: ok=0; break if self.freemap[j]>0: ok=0 j = j+1 c = c-1 if ok==1: #print "allocate(%d)->%d" % (n,i) for j in range(i,i+n): self.freemap[j]=ord(flag) return i #print "allocate(%d) fails for %s" % (n,c) return -1 def free(self,a,n): for i in range(a,a+n): self.freemap[i]=0 return