我需要自制一個malloc
簡化了一下。內存池只是一個無符號字符數組。我打算有一個頭是一個結構,包含內存塊的大小,一個標誌('A'分配,'F'免費)和一個指向下一個頭的指針(雖然我猜這不是'因爲你已經有了塊的長度)C寫入數組結構
任何人,我不知道如何輕鬆地將結構存儲在內存池中。這是我當前的代碼:
#include <stdlib.h>
#include <stdio.h>
#include "ex1.h"
#define POOL_SIZE 500
unsigned char mem_pool[POOL_SIZE];
unsigned char *ptr = &mem_pool[0];
typedef struct header Header;
Header h;
struct header{
int size;
char flag;
Header * next;
};
void ma_init(){
h = (Header){ .size = POOL_SIZE - sizeof(Header), .flag = 'F', .next = NULL};
}
現在ofcourse的h
頭是不是mem_pool內。邏輯上,int初始化應該是mem_pool[0] = (Header){ ...
,因爲這是mem_pool的第一個字段。當然,我可以將指針放入數組中,但這會破壞具有mem_pool的指針。
那麼我應該如何存儲一個結構(或其他)在數組的某個位置?
可能是分配記錄的鏈接列表,既可以在池的開始位置,也可以在池外? –