내부적으로 사용되는 일부 추가 메타 데이터 공간에 지정된 크기의 공간에 대한 힙 공간을 할당하는 간단한 함수를 만드는 중입니다. 크기 (X)를 할당 할 때 난 단계 수행 할 작업메모리에 메타 데이터 추가
:
- 가 X +는 sizeof (구조체 메타) 할당을 이용하여 할당의 malloc의 malloc을 사용. 결과 => start_adr start_adr의 첫 번째 바이트에
- 지정 메타 데이터 +는 sizeof (구조체 메타 데이터) start_adr하는
- 반환 포인터
내가 내 인수 메타의 값을 할당하려면 어떻게 2 단계에 문제가 start_adr의 첫 번째 바이트로?
struct metadata{
unsigned char data;
};
void *myMalloc(int size, unsigned char meta){
int meta_sz = sizeof(struct metadata); // size of metadata
void *ptr = (void *)malloc(meta_sz + size); //pointer to our space in memory
//Magic code for assigning meta here
return (void *)(ptr + meta_sz); // return memory slot (with meta exluded)
}
조심해서 조심하십시오. 그대로, 당신이하고있는 것은 이식성이 없으며 (작동 할 때 성능에 심각한 영향을 미칠 수도 있습니다). – Mat