
https://github.com/POCU/COMP3200CodeSamples
<aside> 💡 목차
</aside>
<aside> 💡 이유…

스택이 힙보다 빠른 이유는
스택은 컴파일할때 exe 파일에 들어간 공간이기 때문에
순수하게 스택 포인터 옮기는 것만으로 메모리 할당 없이 빨리 움직일 수 있지만,
힙은 OS가 가지고 있는 모든 메모리(3기가도 되고 30기가 될수도,,,)
그걸 다 훑으면서 '여기서 한 2메가짜리 연속된 메모리 줘' 라고 요청이 들어오면
그 2메가 있는 연속된 공간을 그 넓은공간에서 찾아야 되거든요...
그래서 힙이 더 느릴 수밖에 없고
메모리 이렇게 썼다, 지웠다, 썼다 지웠다 보면 메모리에 구멍이 생겨요...
한 여기 5바이트 비어있고 뭐 1메가 비어있고 30메가 비어있고 이런 공간이 있는데
제가 갑자기 1기가 메모리 내놔 그러면 1기가 연속된 메모리를 줘야 되거든요?
근데 메모리는 조각조각 파편화 되어있는데 연속된 메모리가 없어서 실제 메모리를 못 구해오는,
할당을 못하는 게 메모리 단편화 문제, 특히 이제 임베디드 시스템 소형 이런 기기 이런 거에서 문제가 있고, 내부 버퍼 증가할 때 멀티 쓰레딩에서 동시에 접근해서 뭐 카운터 바꾸거나 이럴 때 락 제대로 안 걸면 이제 또 약간 문제 생기고
포인터 위치도 아 레이스 컨디션으로 바뀌게 되고 그래서 C++는 업계가 어디인지 생각을 하시면 아 이런 문제들이 좀 한계가 있다는 거 아실 거예요,
그래서 여전히 sprintf() 같은 거 꽤 많이 쓴다... 알아두세요
char 어레이 매우 많이 쓴다, 오히려 이거를 선호하는 경우를 더 많이 봤어요 그래서 이런 거 많이 쓰니까 이쪽을 자주 쓰시는 게 오히려 메모리 관리 면에서 좋을 수도 있어요, 그래서 그런 것도 이제 고민해세요
</aside>