首页 > 编程 > C++ > 正文

模拟实现C语言中的内存管理

2020-05-23 14:16:33
字体:
来源:转载
供稿:网友

这篇文章主要内容是模拟C语言中的内存管理,需要的朋友可以参考下

这里模拟了C语言中的内存管理,当我们要创建或者使用一个对象时,那么这个对象会调用retain方法,计数+1,当我们要释放对象,我们会调用free,这里注意要对计数记性判断,如果是0的话,那么就会销毁。

 

 
  1. #import <Foundation/Foundation.h>  
  2. int cnt = 0;  
  3.  
  4. void fun (charchar * p)  
  5. {  
  6. printf("%c/n",p[0]);  
  7. }  
  8.  
  9. charchar * retain1(charchar * p)  
  10. {  
  11. //retain(p);  
  12. cnt ++;  
  13. return p;  
  14. }  
  15.  
  16. void dealloc1(charchar *p)  
  17. {  
  18. free(p);  
  19. }  
  20.  
  21. void release(charchar * p)  
  22. {  
  23. cnt--;  
  24. if (cnt == 0) {  
  25. //free(p);  
  26. dealloc1(p);  
  27. }  
  28. }  
  29.  
  30. int main(int argc, const charchar * argv[])  
  31. {  
  32.  
  33. @autoreleasepool {  
  34. charchar * p = (charchar *)malloc(1000);  
  35. p[0] = 'a';  
  36. p[1] = 'b';  
  37. charchar * q = p;  
  38. //提前释放  
  39. //free(p);  
  40. //printf("%c/n",p[0]);  
  41. free(q);  
  42. //free(q);  
  43.  
  44. }  
  45. return 0;  

以上就是模拟C语言中内存管理的实现代码,希望对大家的学习有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表