女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當前位置:首頁 > 嵌入式 > 嵌入式大雜燴
[導讀]星標「嵌入式大雜燴」,一起進步!鏈接:https://blog.csdn.net/weixin_37981492/解決問題:malloc在申請內存的時候,內存碎片問題會導致原本內存大小足夠,卻申請大內存失??;比如:原本內存還有10M內存,此時先申請4M內存,再申請16Bytes內...



解決問題:malloc在申請內存的時候,內存碎片問題會導致原本內存大小足夠,卻申請大內存失??;


比如:原本內存還有10M內存,此時先申請4M內存,再申請16Bytes內存,之后把4M內存釋放掉,按理來說,此時應該還有 10M - 16Bytes 內存,但此時,再去申請8M的大內存,則申請失敗。


因為malloc申請的內存,必須是一塊連續(xù)的內存,但此時中間已經有16Bytes內存碎片導致內存不連續(xù),所以申請內存失敗;


以下是我針對碎片問題,對內存管理機制做出一種優(yōu)化方案:在開機初始化內存之后,先申請一塊1M左右內存(根據情況修改大小),用作內存碎片管理,然后把這1M內存分為很多個小內存,并把小內存的地址放在鏈接節(jié)點中,之后申請內存時,優(yōu)先判斷內存碎片管理中是否有滿足大小的小內存。


有的話,直接使用提前申請的小內存就可以了,如果內存管理機制中沒有適合的內存,但重新用malloc()函數申請;


接下來,解釋我寫的碎片管理機制:


1.mm_management_init()初始化函數

void mm_management_init(unsigned int free_memory_start, unsigned int free_memory_end)
傳入參數free_memory_start是內存初始化之后,剩余可申請的首地址,該地址,一般會傳入到main函數,如果main()函數沒有傳入該參數的話,可以在內存初始化之后,自己malloc(4)申請一下,把返回的地址作為mm_management_init()函數的第一個參數;

傳入參數free_memory_end是可以申請的最大地址,每個IC各有不同;


mm_management_init()對16bytes,64bytes,256bytes,512bytes,1024bytes,4096bytes這些小內存做優(yōu)化,提前計算小內存占用的總大小。


然后直接申請這塊大內存占住,再把這塊大內存分配給各個小內存,并記錄在鏈表中,比如:mm_fix_16_head


2.mm_management_malloc()申請函數

unsigned int mm_management_malloc(unsigned int size)
申請內存的時候,先判斷size大小,如果大小可以在內存管理機制中找到,則直接返回提前申請地址,如果大小不滿足,或者小內存已被申請完,則用malloc重新申請

在內存管理機制中拿到的小內存,該鏈表節(jié)點的標記會設為MM_STATUS_BUSY


3.mm_management_free()

void mm_management_free(void *mm_ptr)
與mm_management_malloc()相反,先檢查所有小內存鏈表是都有該地址,有的話就把該地址內存清0,并把標記設為MM_STATUS_FREE;如果是用malloc申請的,當時是free()釋放掉;

接下來是代碼


#include
#include

#define C_MM_16BYTE_NUM    (32)
#define C_MM_64BYTE_NUM    (16)
#define C_MM_256BYTE_NUM   (12)
#define C_MM_512BYTE_NUM   (12)
#define C_MM_1024BYTE_NUM   (18)
#define C_MM_4096BYTE_NUM   (30)

#define C_MM_16BYTE     (16)
#define C_MM_64BYTE     (64)
#define C_MM_256BYTE    (256)
#define C_MM_512BYTE    (512)
#define C_MM_1024BYTE    (1024)
#define C_MM_4096BYTE    (4096)

#define C_MM_MAX_SIZE    C_MM_4096BYTE //碎片管理最大的碎片大小

#define MM_STATUS_FREE    (0) //0:表示內存空閑
#define MM_STATUS_BUSY    (1) //1:表示內存已被申請

#define MM_STATUS_OK                (0)
#define MM_STATUS_FAIL              (1)

typedef struct mm_node_struct {
unsigned int *mm_node; //存放內存節(jié)點指針
unsigned short   iflag; //指針是否空閑
struct P_MM_Node_STRUCT *next; //指向下一個內存節(jié)點指針
} MM_Node_STRUCT, *P_MM_Node_STRUCT;

typedef struct mm_sdram_struct {
unsigned int count;
P_MM_Node_STRUCT  *next;
} MM_SDRAM_STRUCT, *P_MM_SDRAM_STRUCT;

static MM_SDRAM_STRUCT mm_fix_16_head;
static MM_SDRAM_STRUCT mm_fix_64_head;
static MM_SDRAM_STRUCT mm_fix_256_head;
static MM_SDRAM_STRUCT mm_fix_512_head;
static MM_SDRAM_STRUCT mm_fix_1024_head;
static MM_SDRAM_STRUCT mm_fix_4096_head;

static P_MM_SDRAM_STRUCT pmm_fix_16_head =

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

阿聯(lián)酋迪拜2025年8月26日 /美通社/ -- 納斯達克上市公司Robo.ai Inc.今日正式宣布完成品牌煥新升級,并于8月26日正式啟用全新納斯達克股票代碼"...

關鍵字: AI 人工智能 代碼 智能科技

北京2025年8月13日 /美通社/ -- 近日,北京積算科技有限公司(以下簡稱"積算科技")推出一站式AlphaFold3在線算力服務,現已開放免費使用。其內置優(yōu)化后的AlphaFold3模型,支持...

關鍵字: ALPHA 代碼 圖形化 蛋白質

北京2025年7月21日 /美通社/ -- 浪潮信息宣布元腦企智一體機已率先完成對Kimi K2 萬億參數大模型的適配支持,并實現單用戶70 tokens/s的流暢輸出速度,為企業(yè)客戶高效部署應用大模型提供高處...

關鍵字: 模型 AGENT TOKEN 代碼

7月18日,一則“微信安卓安裝包出現5處fxxk”的話題,迅速登上微博熱搜,吸引了眾多網友的熱議和關注。

關鍵字: 代碼 程序員

共鑒AI未來,緬懷先輩貢獻 深圳 2025年5月21日 /美通社/ -- 5月16日下午,深圳市金澄智創(chuàng)AI+傳承迎來了喬遷之喜,一場意義非凡的活動在新址盛大舉行?;顒蝇F場星光熠熠,莊世平前輩之子莊榮新先生、南方財經...

關鍵字: AI AI技術 BSP 代碼

C語言代碼優(yōu)化與性能提升是軟件開發(fā)中至關重要的一環(huán)。優(yōu)化C語言代碼不僅可以提高程序的執(zhí)行效率,還可以減少資源消耗,提升用戶體驗。

關鍵字: C語言 代碼

Qt 路線圖致力于實現與各行業(yè)技術棧的無縫集成,助力企業(yè)與開發(fā)者使用自選工具,更高效地構建、擴展和維護軟件解決方案。 芬蘭埃斯波 2025年5月7日 /美通社/ -- 在今日舉行的2025年Qt全球峰會上,Qt...

關鍵字: GROUP 生態(tài)系統(tǒng) 開發(fā)者 代碼

——首批"專家級數字員工"部署上崗,構建組織傳承與人才戰(zhàn)略的AI導師矩陣 北京2025年4月25日 /美通社/ -- 在生成式AI技術加速重構組織能力與人才機制的當下,如何留住專家經驗、培養(yǎng)管理人才...

關鍵字: AI 智能體 矩陣 代碼

深圳2025年4月21日 /美通社/ --?近日,國家發(fā)展改革委公布第 31 批國家企業(yè)技術中心認定名單,華測檢測認證集團股份有限公司(股票代碼:300012.SZ,簡稱 "CTI 華測檢測")憑借在檢驗檢測領域的全鏈條...

關鍵字: TI IC 代碼 半導體

珠海2025年3月13日 /美通社/ -- 近期,AI工具DeepSeek引發(fā)廣泛關注,大量非專業(yè)投資者試圖借助其生成股票策略,卻面臨現實困境:平臺輸出的Python代碼策略對零編程基礎用戶存在極高使用門檻。即...

關鍵字: EPS 代碼 PSE AI
關閉