Po uruchomieniu skompiluj ten kod za pomocą SDCC 3.1.0 i uruchom go na Amstrad CPC 464 (w emulacji, z WinCPC 0.9.26 uruchomionym na Wine):SDCC i malloc() - przydzielanie znacznie mniej pamięci niż jest dostępne
void _test_malloc()
{
long idx = 0;
while (1)
{
if (malloc(5))
{
printf("%ld\r\n", ++idx);
}
else
{
printf("done");
break;
}
}
}
... konsekwentnie wygrywa w 92 malloc(). I sprawiają, że 460 bajtów, który prowadzi mnie na kilka pytań:
Co jest malloc() robi na tym systemie? Miałem nadzieję, że więcej miejsca zostanie zapisane w pamięci masowej nawet w systemie 64 kB. Jest to zgodne z systemami 64kB i 128kB; czy muszę wykonywać magię, aby uzyskać dostęp do dodatkowej pamięci, np. ręczne przełączanie banków?
Dlaczego 5-bajtowe przyrosty? Co się stanie, gdy przydzielisz większe porcje (po prostu będąc ciekawym)? Inne pytanie: Ile miejsca na stos możesz zabrać? –