我對內存池的實現感到困惑。我創建了一個內存池:在內存池中實現內存池
typedef struct POOL
{
struct POOL *p_next;
unsigned short size;
unsigned short used;
}pool;
pool *p;
p=malloc(pool_size+sizeof(pool));
p->size= pool_size;
p->used= 0;
,現在我要分割此內存池與BLOCK_SIZE塊,所以
typedef struct BLOCK
{
unsigned short size;
struct BLOCK *b_next;
}block;
block *b=NULL;
b=(block *)&p[block_size+sizeof(block)];
b->size=block_size;
memset(b,0,size+sizeof(block));
p->used+=(size+sizeof(block));
,現在我想用塊B的內存,所以我只是使用它作爲
strcpy(b, "hello, world!");
我是否正確地做它?我該如何解決這個問題?
什麼是'pool'?那是'struct'嗎? –
是的,它是一個結構體,它包含關於池大小,池ID以及指向下一個池的指針的信息,並且該塊也是一個結構體。 – vera
你需要描述你的結構更多&我希望你知道這個 - 'p'這裏是一個指針,'sizeof(pool)'是一個指針的大小,而不是指向'pool'塊的大小,同樣的事情'的sizeof(塊)'。 – brokenfoot