2013-04-06 1 views
-1

저는 메모리 풀로 사용하고있는 char 배열을 가지고 있습니다. 이미 모든 바이트가 무료/무료가 아니라는 것을 나타내는 플래그가 붙어 있습니다. 내 질문에 대한 각 int 배열의 4 바이트를 할당하는 방법에 대한 이동합니까? 나는이 작동 생각하고 어떻게char 배열의 특정 바이트 수를 할당하는 방법 - 메모리 관리

작은 예 :

void* block; 
char memPool[50]; 

block = &memPool[0]; 
return block; 

이것은 내가 제대로 생각하고있는 경우 1 바이트를 저장하기에 충분히 큰 위치에 대한 포인터를 반환합니다. 그래서 어쩌면 내가 대신 4 바이트의 void * 배열을 사용할 수 있고 내가 통과되는 모든 형식의 sizeof까지 바이트를 반복합니다. 나는 앉아서 코딩을 시작하기 전에 이것을 종이에 뿌리려고 노력하고있다.

저는 약간의 통찰력을 찾고 있습니다. 감사.

+3

블록에 50 바이트를 저장할 수 있으며 코드는 해당 블록에 대한 포인터를 반환합니다. 1 바이트를 어디에서 가져 오는지 또는 4 바이트의 void * 배열을 사용하는지 알 수 없습니다. 나는 너에게 약간의 오해가 있다고 생각한다. – john

+0

memPool [0]이 1 바이트 만 보유 할 수 있다고 생각하는데 잘못 되었습니까? –

+1

아니요,하지만 50 바이트 블록에 대한 포인터 인'& memPool [0]'을 반환합니다. – john

답변

0

할당 된 메모리가 연속적이므로 포인터를 사용하여 인덱스를 반복 할 수 있으므로 전체 50 개의 블록이 있습니다.

void* block; //the pointer 
char memPool[50]; //the contiguous memory location allocated 

block = &memPool[0]; //the pointer is holding the address of 0th index, hence the whole memory location 
return block; 
+0

모든 도움에 감사드립니다. 나는 모든 것을 알아 냈어. 나는 잘못된 사고 방식으로 생각하고있었습니다. char 배열을 사용하여 메모리 관리자를 생성하는 것은 거의 불가능하지 않았습니다. 그냥 조금 창의적이었습니다. –

+0

당신을 환영합니다. – nommyravian

관련 문제