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()에서 일관되게 탭 아웃됩니다. 460 바이트를 만들면 다음과 같은 몇 가지 질문을하게됩니다.
이 시스템에서 malloc()은 무엇을하고 있습니까? 나는 64kB 시스템에서도 더 많은 저장 용량을 기대하고있다.
64kB 시스템과 128kB 시스템에서는 동작이 일관된다. 수동 뱅크 전환 같은 추가 메모리에 액세스하려면 어떤 종류의 마법을 수행해야합니까?
왜 5 바이트 단위로 증가합니까? 더 큰 덩어리를 할당하면 (단지 호기심이 생기는 것) 어떤 일이 발생합니까? 다른 질문 : 스택 공간을 얼마나 허용합니까? –