亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mem.c

?? 一個小型虛擬機的實現代碼
?? C
字號:
#include<stdio.h>

#define U1 unsigned char
#define U8 __int64

#define TRUE		1
#define FALSE		0

#define FREE		0
#define RESERVED	1
char *statStr[] = {"FREE","RESERVED"};

/* Memory block header = 17 bytes = 8 previous + 8 next + status */

#define SIZE_HEADER	17

#define prev(i)		*((U8 *)&memory[i])
#define next(i)		*((U8 *)&memory[i+8])
#define status(i)	memory[i+16]
#define size(i)		next(i)-i-SIZE_HEADER

/* if going to split free block, need at least 8 bytes in new free part */

#define MIN_FREE_BYTES   8

U1 memory[1024];
U8 first;	/*stores address of first byte of heap*/
U8 last;	/*store address of last byte of heap + 1*/

void heapInit()
{
	first=5;
	last=1024;
	
	prev(first)=0;
	next(first)=0;
	status(first)=FREE;

	return;

}/*end heapInit*/

int currentNodeAlloc(U8 i,U8 nbytes)
{
	U8 size;

	/*handle case of current block being the last*/

	if(next(i)==0){ size = last-i-SIZE_HEADER; }
	else{ size = size(i); }

	/*either split current block, use entire current block, or fail*/

	if(size >= nbytes + SIZE_HEADER + MIN_FREE_BYTES)
	{
		U8 old_next;
		U8 old_block;
		U8 new_block;

		old_next = next(i);
		old_block = i;

		/*fix up original block*/

		next(i)=i+SIZE_HEADER+nbytes;	
		new_block = next(i);
		status(i)=RESERVED;

		/*set up new free block*/

		i = next(i);					
		next(i)=old_next;
		prev(i)=old_block;
		status(i)=FREE;

		/*right nieghbor must point to new free block*/

		if(next(i)!=0)			
		{
			i = next(i);
			prev(i)=new_block;
		}
		
		return(TRUE);
	}
	else if(size >= nbytes)
	{
		status(i)=RESERVED;
		return(TRUE);
	}

	return(FALSE);

}/*end currentNodeAlloc*/

U8 alloc(U8 nbytes)
{
	int ret;
	U8 i;

	i=first;

	if(status(i)==FREE)
	{
		ret = currentNodeAlloc(i,nbytes);
		if(ret==TRUE)
		{
			return(i+SIZE_HEADER);
		}
	}

	while(next(i)!=0)
	{
		i=next(i);
		if(status(i)==FREE)
		{
			ret = currentNodeAlloc(i,nbytes);
			if(ret==TRUE)
			{
				return(i+SIZE_HEADER);
			}
		}
	}

	return(0);

}/*end alloc*/

/*Note: disaster will strike if fed wrong address*/

void deAlloc(U8 address)
{
	U8 block;
	U8 lblock;
	U8 rblock;

	block = address-SIZE_HEADER;
	lblock = prev(block);
	rblock = next(block);

	/*
	4 cases: FFF->F, FFR->FR, RFF->RF, RFR 
	always want to merge free blocks 
	*/

	if((lblock!=0)&&(rblock!=0)&&(status(lblock)==FREE)&&(status(rblock)==FREE))
	{
		next(lblock)=next(rblock);
		status(lblock)=FREE;
		if(next(rblock)!=0){ prev(next(rblock))=lblock; }
	}
	else if((lblock!=0)&&(status(lblock)==FREE))
	{
		next(lblock)=next(block);
		status(lblock)=FREE;
		if(next(block)!=0){ prev(next(block))=lblock; }
	}
	else if((rblock!=0)&&(status(rblock)==FREE))
	{
		next(block)=next(rblock);
		status(block)=FREE;
		if(next(rblock)!=0){ prev(next(rblock))=block; }
	}
	else{ status(block)=FREE; }

	return;

}/*end deAlloc*/

void printMemory()
{
	U8 i;
	i=first;
	printf("[%I64u,%I64u,%I64u,%s]\n",prev(i),i,next(i),statStr[status(i)]);
	while(next(i)!=0)
	{
		i=next(i);
		printf("[%I64u,%I64u,%I64u,%s]\n",prev(i),i,next(i),statStr[status(i)]);
	}
	return;

}/*end printMemory*/

void main()
{
	U8 address[10];
	heapInit();

	printf("Allocating----------------\n");
	address[0]=alloc(10); printf("\taddress= %I64u\n",address[0]);
	address[1]=alloc(20); printf("\taddress= %I64u\n",address[1]);
	address[2]=alloc(15); printf("\taddress= %I64u\n",address[2]);
	address[3]=alloc(40); printf("\taddress= %I64u\n",address[3]);
	address[4]=alloc(5); printf("\taddress= %I64u\n",address[4]);
	address[5]=alloc(1); printf("\taddress= %I64u\n",address[5]);
	address[6]=alloc(2); printf("\taddress= %I64u\n",address[6]);
	address[7]=alloc(200); printf("\taddress= %I64u\n",address[7]);
	address[8]=alloc(1); printf("\taddress= %I64u\n",address[8]);
	printf("Dump map------------------\n");
	printMemory();
	printf("\nDeallocating address[8]+++\n");deAlloc(address[8]);printMemory();
	printf("\nDeallocating address[7]+++\n");deAlloc(address[7]);printMemory();
	printf("\nDeallocating address[1]+++\n");deAlloc(address[1]);printMemory();
	printf("\nDeallocating address[3]+++\n");deAlloc(address[3]);printMemory();
	printf("\nDeallocating address[5]+++\n");deAlloc(address[5]);printMemory();
	printf("\nDeallocating address[4]+++\n");deAlloc(address[4]);printMemory();
	printf("\nDeallocating address[0]+++\n");deAlloc(address[0]);printMemory();
	printf("\nDeallocating address[2]+++\n");deAlloc(address[2]);printMemory();
	printf("\nDeallocating address[6]+++\n");deAlloc(address[6]);printMemory();
	return;

}/*end main*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一二三区在线| 欧美麻豆精品久久久久久| 亚洲大片免费看| 国产精品久久久久久久蜜臀| 精品福利一区二区三区| 欧美一区二区三区四区五区| 欧美日韩午夜在线| 欧美色偷偷大香| 欧美午夜电影一区| 在线欧美日韩国产| 欧美又粗又大又爽| 欧美色中文字幕| 欧美精品丝袜久久久中文字幕| 欧美视频三区在线播放| 欧美日韩一区不卡| 制服丝袜激情欧洲亚洲| 欧美一区二区网站| 精品国产伦一区二区三区观看体验| 欧美日产国产精品| 日韩一区二区三区电影在线观看 | 丝袜亚洲另类欧美综合| 亚洲不卡av一区二区三区| 午夜视频在线观看一区二区| 午夜a成v人精品| 奇米精品一区二区三区在线观看| 蜜臀av国产精品久久久久| 麻豆精品一区二区av白丝在线| 国产在线精品一区二区夜色| 成人一二三区视频| 在线观看欧美黄色| 91精品国产全国免费观看| 精品国产区一区| 亚洲视频香蕉人妖| 日韩影视精彩在线| 国产精品888| 色8久久精品久久久久久蜜| 欧美高清你懂得| 国产三级一区二区| 亚洲一区在线视频| 九色综合国产一区二区三区| 99久久精品国产毛片| 欧美精品一二三四| 国产精品免费久久久久| 亚洲成av人片www| 国产精品亚洲а∨天堂免在线| 色偷偷一区二区三区| 精品国产人成亚洲区| 亚洲国产精品自拍| 国产ts人妖一区二区| 欧美顶级少妇做爰| 日韩毛片精品高清免费| 久久99精品国产.久久久久久| 成人精品高清在线| 欧美成人精品福利| 久久电影网电视剧免费观看| 成人动漫一区二区| 精品国产制服丝袜高跟| 亚洲一区二区在线观看视频| 成人午夜电影小说| 精品剧情v国产在线观看在线| 亚洲影院在线观看| jizzjizzjizz欧美| 久久亚洲精品小早川怜子| 天天影视涩香欲综合网| jvid福利写真一区二区三区| 精品久久久久久久久久久久包黑料| 亚洲精品第1页| 国产高清不卡一区二区| 欧美成人精品高清在线播放| 天天做天天摸天天爽国产一区| 色乱码一区二区三区88| 国产精品久久久久久久久免费桃花| 精品一区二区三区香蕉蜜桃| 欧美精品电影在线播放| 亚洲成va人在线观看| 色婷婷综合中文久久一本| 国产精品色一区二区三区| 国产一区二区在线观看视频| 精品国产污污免费网站入口 | 91.xcao| 亚洲一区二区在线观看视频| 91美女片黄在线观看| 成人免费一区二区三区在线观看| 国产成人一区在线| 久久精品视频在线免费观看| 国产美女精品一区二区三区| 日韩欧美一二三| 精品亚洲成a人在线观看| 日韩视频一区二区| 国产一区在线不卡| 欧美精彩视频一区二区三区| 丰满白嫩尤物一区二区| 国产欧美日韩综合| 成a人片亚洲日本久久| 亚洲日穴在线视频| 欧美在线不卡视频| 日本午夜一区二区| 精品国产凹凸成av人网站| 国产一区二区三区四区五区美女| 欧美电影免费观看高清完整版在线观看| 免费人成网站在线观看欧美高清| 日韩欧美国产午夜精品| 国产在线视频一区二区三区| 国产精品每日更新在线播放网址| 91视频国产资源| 天堂蜜桃91精品| 精品国产91洋老外米糕| 99久久综合色| 午夜一区二区三区视频| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品性做久久久久久| 亚洲色欲色欲www在线观看| 欧美日本在线一区| 丁香啪啪综合成人亚洲小说 | 亚洲国产综合人成综合网站| 日韩欧美成人一区| 成人性生交大片免费看中文网站| 亚洲黄色在线视频| 精品日韩一区二区三区| av电影天堂一区二区在线| 日韩av二区在线播放| 国产精品你懂的| 777欧美精品| 91在线视频网址| 精品亚洲aⅴ乱码一区二区三区| 国产精品美女视频| 日韩欧美一卡二卡| 在线观看网站黄不卡| 国产精品香蕉一区二区三区| 五月婷婷欧美视频| 中文字幕一区二区不卡 | 精品国产免费人成在线观看| 色94色欧美sute亚洲13| 国产成人免费网站| 麻豆国产精品官网| 亚洲一卡二卡三卡四卡五卡| 国产精品色呦呦| 久久久久久亚洲综合影院红桃| 欧美亚洲一区二区三区四区| 成人国产免费视频| 狠狠色丁香久久婷婷综合丁香| 亚洲第一电影网| 亚洲私人影院在线观看| 国产欧美日韩卡一| 亚洲精品一区二区三区香蕉| 欧美一区二区黄色| 666欧美在线视频| 欧美体内she精视频| 色综合色综合色综合色综合色综合| 国产精品一区二区男女羞羞无遮挡| 午夜电影一区二区三区| 亚洲v中文字幕| 亚洲高清中文字幕| 亚洲国产精品嫩草影院| 亚洲一区影音先锋| 一区二区三区在线视频观看| 亚洲免费观看高清完整版在线观看 | 26uuu亚洲| 精品99一区二区三区| 精品国产亚洲一区二区三区在线观看| 678五月天丁香亚洲综合网| 777色狠狠一区二区三区| 欧美丰满一区二区免费视频| 欧美肥妇毛茸茸| 日韩一级精品视频在线观看| 欧美一级搡bbbb搡bbbb| 日韩美一区二区三区| 日韩精品中文字幕一区二区三区| 日韩三级伦理片妻子的秘密按摩| 日韩一区二区中文字幕| 26uuu亚洲综合色欧美 | 成人美女视频在线看| 99精品国产视频| 在线观看视频一区二区欧美日韩| 欧美日韩精品一区二区在线播放| 欧美日韩久久一区| 欧美成人欧美edvon| 国产亚洲欧洲997久久综合| 国产精品乱人伦中文| 一区二区三区.www| 日本不卡一二三| 国产精品一区二区无线| 91色在线porny| 欧美日韩在线三区| 精品国产乱码久久久久久夜甘婷婷| 久久先锋影音av| 一区二区在线观看视频| 欧美bbbbb| 97久久精品人人做人人爽50路| 色天天综合久久久久综合片| 欧美一区二区免费| 国产精品视频一二| 天堂蜜桃91精品| 成人深夜福利app| 欧美一个色资源| 自拍偷拍欧美精品| 看电视剧不卡顿的网站| 99国产精品久| 欧美成人aa大片| 亚洲最新视频在线观看|