일반적으로 일부 데이터가 전역, 정적 또는 스택에 있는지 여부를 결정하는 데 아무런 문제가 없습니다 (여기서는 동적 할당이 없으므로 힙 사용 없음). 나는 이것 과 같은 몇 가지 Q / A를 읽었 지만 시스템 메모리에 비해 엄청난 양의 데이터가 관련되어 있기 때문에 내 질문은 더 구체적입니다.
개선하려고하는 기존 코드 (디자인, 가능한 문제, 성능 등)를 만들고 있습니다. 이 코드는 4KB의 RAM 만있는 이전 8 비트 MCU에서 실행됩니다 . 이 코드에서는 거의 1KB ( 4KB RAM 시스템의 경우 1KB) 배열을 사용 합니다. 이 배열의 각 바이트가 사용되지만 문제는 아닙니다. 문제는이 배열이 선언 된 파일의 정적 배열이므로 수명주기는 프로그램과 동일합니다 (즉, 무한한 것으로 간주 될 수 있음).
그러나 코드를 읽은 후에는이 배열에 무한 수명주기가 필요하지 않다는 것을 알았습니다.이 절차는 완전히 절차적인 방식으로 작성 및 처리되었으므로 사용 된 함수에서만 선언 할 수 있어야합니다. 이런 식으로 스택에 저장되므로이 1KB의 RAM을 절약 할 수 있습니다.
이제 질문 : 이것이 좋은 생각입니까? 설계 관점에서 무한 / 전역 수명주기가 필요하지 않은 경우 스택에 속합니다. 그러나, 그것은 4KB 중 1KB 입니다. 이러한 RAM의 25 %를 할당하는 데 단점이 있습니까? (스택의 50 % 이상일 수 있음)
누군가 이런 종류의 상황에 대한 경험을 공유 할 수 있습니까, 아니면 누군가 가이 배열을 스택에 올려 놓지 않는 정당한 이유를 생각할 수 있습니까? 디자인에 대한 의견뿐만 아니라 기술적 단점을 찾고 있습니다.
내가 의식하고있는 유일한 것은이 기능을 시작할 때 실제로 1KB의 스택을 확보해야한다는 것입니다. 어쩌면 그것이 내가 돌봐야 할 전부일 수도 있고 아닐 수도 있습니다.