当我使用 SDCC 3.1.0 编译此代码并在 Amstrad CPC 464 上运行它时(在仿真下,WinCPC 0.9.26 在 Wine 上运行):
void _test_malloc()
{
long idx = 0;
while (1)
{
if (malloc(5))
{
printf("%ld\r\n", ++idx);
}
else
{
printf("done");
break;
}
}
}
...它始终在 92 malloc()s 处敲击。我做了 460 个字节,这导致我提出几个问题:
malloc() 在这个系统上做什么?即使在 64kB 的系统上,我也有点希望存储量增加一个数量级
行为在 64kB 系统和 128kB 系统上是一致的;我是否必须执行某种魔术才能访问额外的内存,例如手动银行切换?