/ / malloc nezlyhá v Keil C - c, keil, 8051

malloc nezlyhá v Keil C - c, keil, 8051

Ako môžem skontrolovať, či malloc () zlyhal v Keil C?

unsigned char xdata malloc_mempool [0x100];
void display()
{
unsigned char xdata *ptr;
int a;
init_mempool (&malloc_mempool, sizeof(malloc_mempool));

ptr = malloc(9000000);
if(ptr != 0)
{
a = 7;
free(ptr);
} else {
a = 9;
}
}

Ako sa uvádza v http://www.keil.com/support/man/docs/c51/c51_malloc.htm malloc vráti nulový ukazovateľ, ak nie je dostatočná pamäť na uspokojenie žiadosti o alokáciu. To je samozrejme nie tak pamäte mush v 8051. Ale výsledok a je vždy 7.

odpovede:

2 pre odpoveď č. 1

z Pochopenie organizácie pamäte mikrokontroléru 8051 8051 má maximálnu pamäť 64 kB.

Takže bude používať 2 bajty pre ukazovatele. 9000000 desatinných miest je 0x895440 v šestnástku, čo je 3 bajty.

Veľmi pravdepodobne bude funkcia malloc () jednoducho ignorovať bity, ktoré nepoužíva, takže v skutočnosti hovor, ktorý robíte, je

ptr = malloc(0x5440);

ktorý je

ptr = malloc(21568);