这篇文章主要内容是模拟C语言中的内存管理,需要的朋友可以参考下
这里模拟了C语言中的内存管理,当我们要创建或者使用一个对象时,那么这个对象会调用retain方法,计数+1,当我们要释放对象,我们会调用free,这里注意要对计数记性判断,如果是0的话,那么就会销毁。
- #import <Foundation/Foundation.h>
 - int cnt = 0;
 - void fun (charchar * p)
 - {
 - printf("%c/n",p[0]);
 - }
 - charchar * retain1(charchar * p)
 - {
 - //retain(p);
 - cnt ++;
 - return p;
 - }
 - void dealloc1(charchar *p)
 - {
 - free(p);
 - }
 - void release(charchar * p)
 - {
 - cnt--;
 - if (cnt == 0) {
 - //free(p);
 - dealloc1(p);
 - }
 - }
 - int main(int argc, const charchar * 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);
 - }
 - return 0;
 - }
 
以上就是模拟C语言中内存管理的实现代码,希望对大家的学习有所帮助。
新闻热点
疑难解答