這里模擬了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語言中內存管理的實現代碼,希望對大家的學習有所幫助。
新聞熱點
疑難解答
圖片精選