존 카맥(John Carmack)은 C/C++에서 일반적으로 꺼리는 alloca()를 더 활용할 수 있다고 주장한다. 64비트 아키텍처라면 기본 스택에 물리 메모리와 같은 크기의 가상 주소 공간을 할당하자는 제안이다.
카맥은 스택만으로도 메모리를 잘 관리할 수 있으며 정확성과 성능에 이점이 있다고 본다. 메모리 할당은 포인터를 조정하는 간단한 작업이고 해제에는 비용이 들지 않으며, 메모리를 연속적으로 배치하면 캐시 계층에 유리하고 대용량 페이지를 사용하기 쉽다는 설명이다. 임시 메모리를 스택에 남기는 방식도 임시 할당이 O(n)보다 많이 발생하는 알고리즘이 아니라면 대체로 큰 문제가 되지 않는다고 주장했다.
또한 정적 분석으로 스택 포인터를 스택의 더 깊은 곳에 있는 구조체에 저장하는 사례를 찾아내면, 댕글링 포인터로 인한 사용 후 해제(use-after-free)를 막아 메모리 관리의 정확성을 보장할 수 있다고 말했다. 다만 호출자가 메모리를 할당해 반환하는 방식은 일부 동적 상황에서 불편하며, 함수가 호출 당시보다 확장된 스택 상태로 반환하도록 하려면 저수준 호출 규약을 바꿔야 한다고 덧붙였다. 카맥은 이 변화가 실제로 이뤄질 것이라고 기대하지는 않는다고 밝혔다.
그는 AI 코딩 에이전트의 등장으로 소프트웨어 아키텍처 논의의 중요성이 커질지 작아질지는 분명하지 않다고도 말했다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요