Я пытаюсь создать функцию malloc, и в этом коде:
typedef struct hlavicka
{
unsigned int velkost;
struct hlavicka *dalsi;
struct hlavicka *pred;
} HLAVICKA;
struct hlavicka *blok;
void init(void *ptr, unsigned size)
{
blok = ptr;
blok->velkost = 1;
blok->dalsi = blok;
blok->pred = blok;
}
void *memory_alloc(unsigned int size)
{
HLAVICKA *ptr = NULL;
int nova_velkost = size + sizeof(HLAVICKA);
ptr = find_fit(nova_velkost);
if ((long)ptr == -1)
return NULL;
else
{
*(unsigned int *)ptr = size;
return (void *)((char*)ptr + sizeof(HLAVICKA));
}
}
void *find_fit(unsigned int size)
{
HLAVICKA *pom_ptr;
for (pom_ptr = blok->dalsi; (pom_ptr != blok) && (pom_ptr->velkost < size); pom_ptr = pom_ptr->dalsi)
if (pom_ptr != blok)
return pom_ptr;
}
int main()
{
char region[50], *pointer;
init(region, 50);
pointer = (char*)memory_alloc(10);
return 0;
}
У меня три ошибки:
warning C4013: 'find_fit' undefined; assuming extern returning int
warning C4047: '=' : 'HLAVICKA *' differs in levels of indirection from 'int'
error C2040: 'find_fit' : 'HLAVICKA *(unsigned int)' differs in levels of indirection from 'int ()'
В чем проблема?В структуре или типе функции?