Wenn ich diesen Code mit SDCC 3.1.0 kompilieren, und führen Sie es auf einem Amstrad CPC 464 (unter Emulation, mit WinCPC 0.9.26 läuft auf Wein):SDCC und malloc() - Zuweisung viel weniger Speicher als verfügbar ist
void _test_malloc()
{
long idx = 0;
while (1)
{
if (malloc(5))
{
printf("%ld\r\n", ++idx);
}
else
{
printf("done");
break;
}
}
}
... es klopft konsequent bei 92 malloc() s. Ich mache das 460 Bytes, was mich zu ein paar Fragen führt:
Was macht malloc() auf diesem System? Ich hoffte auf eine Größenordnung mehr Speicher sogar auf einem 64kB System
Das Verhalten ist auf 64kB Systemen und 128kB Systemen konsistent; Muss ich irgendeine Art von Magie ausüben, um auf den zusätzlichen Speicher zugreifen zu können, wie zum Beispiel die manuelle Bankumschaltung?
Warum die 5-Byte-Inkremente? Was passiert, wenn Sie größere Stücke zuweisen (nur neugierig sein)? Andere Frage: Wie viel Speicherplatz darfst du nehmen? –