当我使用SDCC 3.1.0编译此代码并在Amstrad CPC 464(在仿真环境下运行,WinCPC 0.9.26在Wine上运行)上运行它时:SDCC和malloc() - 分配的内存少得多
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系统上是一致的;我是否必须执行某种魔术来访问额外的内存,如手动银行切换?
为什么要增加5个字节?当你分配更大的块(只是好奇)会发生什么?其他问题:您允许使用多少堆栈空间? –