模擬實(shí)現(xiàn)C語言中的內(nèi)存管理
這里模擬了C語言中的內(nèi)存管理,當(dāng)我們要?jiǎng)?chuàng)建或者使用一個(gè)對象時(shí),那么這個(gè)對象會調(diào)用retain方法,計(jì)數(shù)+1,當(dāng)我們要釋放對象,我們會調(diào)用free,這里注意要對計(jì)數(shù)記性判斷,如果是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語言中內(nèi)存管理的實(shí)現(xiàn)代碼,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
Qt網(wǎng)絡(luò)編程實(shí)現(xiàn)TCP通信
這篇文章主要為大家詳細(xì)介紹了Qt網(wǎng)絡(luò)編程實(shí)現(xiàn)TCP通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08libevent庫的使用--定時(shí)器的使用實(shí)例
這篇文章主要介紹了libevent庫的使用--定時(shí)器的使用實(shí)例,有需要的朋友可以參考一下2013-12-12VC中實(shí)現(xiàn)GB2312、BIG5、Unicode編碼轉(zhuǎn)換的方法
這篇文章主要介紹了VC中實(shí)現(xiàn)GB2312、BIG5、Unicode編碼轉(zhuǎn)換的方法,該功能非常實(shí)用,需要的朋友可以參考下2014-07-07C++中回調(diào)函數(shù)及函數(shù)指針的實(shí)例詳解
這篇文章主要介紹了C++中回調(diào)函數(shù)及函數(shù)指針的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10詳解利用C語言如何實(shí)現(xiàn)簡單的內(nèi)存池
這篇文章主要給大家介紹了關(guān)于C語言如何實(shí)現(xiàn)簡單的內(nèi)存池的相關(guān)資料,設(shè)計(jì)內(nèi)存池的目標(biāo)是為了保證服務(wù)器長時(shí)間高效的運(yùn)行,通過對申請空間小而申請頻繁的對象進(jìn)行有效管理,減少內(nèi)存碎片的產(chǎn)生,合理分配管理用戶內(nèi)存,需要的朋友可以參考下2021-08-08