模拟实现C语言中的内存管理
这里模拟了C语言中的内存管理,当我们要创建或者使用一个对象时,那么这个对象会调用retain方法,计数+1,当我们要释放对象,我们会调用free,这里注意要对计数记性判断,如果是0的话,那么就会销毁。
#import<Foundation/Foundation.h>
intcnt=0;
voidfun(charchar*p)
{
printf("%c\n",p[0]);
}
charchar*retain1(charchar*p)
{
//retain(p);
cnt++;
returnp;
}
voiddealloc1(charchar*p)
{
free(p);
}
voidrelease(charchar*p)
{
cnt--;
if(cnt==0){
//free(p);
dealloc1(p);
}
}
intmain(intargc,constcharchar*argv[])
{
@autoreleasepool{
charchar*p=(charchar*)malloc(1000);
p[0]='a';
p[1]='b';
charchar*q=p;
//提前释放
//free(p);
//printf("%c\n",p[0]);
free(q);
//free(q);
}
return0;
}
以上就是模拟C语言中内存管理的实现代码,希望对大家的学习有所帮助。