這篇文章主要內容是模擬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語言中內存管理的實現代碼,希望對大家的學習有所幫助。
新聞熱點
疑難解答