임베디드 시스템과 펌웨어
작은 마이크로컨트롤러의 펌웨어에서 malloc 등의 동적 메모리 할당을 피하는 경우가 많은 이유로 올바른 것은 무엇입니까?
- A마이크로컨트롤러에서는 C 언어 함수를 전혀 사용할 수 없기 때문에
- BRAM이 작아 단편화로 할당에 실패하거나, 할당에 걸리는 시간을 예측하기 어렵기 때문에
- C동적으로 할당한 메모리는 전원을 꺼도 지워지지 않기 때문에
정답과 해설 보기
정답: B. RAM이 작아 단편화로 할당에 실패하거나, 할당에 걸리는 시간을 예측하기 어렵기 때문에
수 KB~수백 KB의 RAM밖에 없는 마이크로컨트롤러에서 할당과 해제를 반복하면 빈 공간이 잘게 나뉘어, 합계는 충분해도 큰 할당에 실패하는 경우가 있습니다. 몇 달씩 계속 동작하는 기기에서는 언젠가 실패할 위험이 있습니다. 또한 할당에 걸리는 시간이 일정하지 않아 실시간 처리에는 맞지 않습니다. 그래서 필요한 메모리를 처음에 정적으로 확보해 두는 설계가 많이 사용됩니다.