这篇文章主要内容是模拟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语言中内存管理的实现代码,希望对大家的学习有所帮助。
新闻热点
疑难解答