메모리 풀 구현에 대해 혼동합니다. 나는 메모리 풀 생성 :은 메모리 풀을 구현합니다.
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;
을 지금은 너무, 블록 _ 크기와 블록으로이 메모리 풀을 분할
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!");
으로 올바르게 사용하고 있습니까? 문제를 어떻게 해결할 수 있습니까? 다음
b=(block *)&p[block_size+sizeof(block)];
p
에서
'풀'이란 무엇입니까? 그것은'struct'입니까? –
예, 구조체는 풀 크기, 풀 ID 및 다음 풀에 대한 포인터에 대한 정보를 포함합니다. 블록 또한 구조체입니다. – vera
구조체를 더 자세히 설명해야합니다. & p는 포인터입니다. 'sizeof (pool)'은 블록의 크기가 아닌 포인터의 크기입니다.'pool'은 같은 것을 가리 킵니다. 'sizeof (블록)'. – brokenfoot