Ejemplo n.º 1
0
int main(int argc, char *argv[])
{
    if (argc < 4) {
        std::cout << "Usage: basiclife <rows> <cols> <numstart> <generations> <prefix>" << std::endl;
        return 0;
    }
	
	int rows = atoi(argv[1]);
	int cols = atoi(argv[2]);
	int numStart = atoi(argv[3]);
	int numGenerations = atoi(argv[4]);
	std::string prefix(argv[5]);
	
    std::vector< std::vector<bool> > arena;
	
	initializeArena(arena, rows, cols, numStart);
	
	int generationCount = 0;
	
	while (generationCount < numGenerations) {
		writeGenerationToFile(arena, prefix, generationCount);
		computeNextGeneration(arena);
		generationCount++;
	}
}
void *nextFitAllocRegion(size_t s) {
size_t asize = align8(s);
BlockPrefix_t *p;
if (arenaBegin == 0)		/* arena uninitialized? */
	initializeArena();
p = findNextFit(s);		/* find a block */
if (p) {			/* found a block */
	size_t availSize = computeUsableSpace(p);
	if (availSize >= (asize + prefixSize + suffixSize + 8)) { /* split block? */
		void *freeSliverStart = (void *)p + prefixSize + suffixSize + asize;
		void *freeSliverEnd = computeNextPrefixAddr(p);
		makeFreeBlock(freeSliverStart, freeSliverEnd - freeSliverStart);
		makeFreeBlock(p, freeSliverStart - (void *)p); /* piece being allocated */
	}
	p->allocated = 1;		/* mark as allocated */
	return prefixToRegion(p);	/* convert to *region */
} else {			/* failed */
	return (void *)0;
}
  
}