어소트락 싱글톤과정중 객체를 정적으로 할당하는것을보고 바로 공부 부족을 깨달았다.(기본 할당)
처음엔 https://www.cs.odu.edu/~zeil/cs361/latest/Public/storageModels/index.html
How data is Stored in C++
main calls readShipments. An activation record for readShipments is pushed onto the stack. We have not shown the code for this, so there’s no telling what else might be in the new activation record. Eventually, countBooks will exit its loop and will call
www.cs.odu.edu
기록용 처음 생각의 흐름
이런 글을 번역해서 보고 했는데 한글로 된것도 충분히 잘 설명된것들이 많은것 같다.
힙과 스택 영역을 완전히 이해하지 못했었고 어떤 차이가 있는지 내가 정확히 모른다는것을 알게 되었다.
더욱 찾아봄
컴파일시 할당되고 종료시 반환된다는것
같은 그러니까 사이즈의 변화가 없으니 값을 변경하면 그냥 값이 바뀌지 않을까?함
조금 공부한 후
경일 학원에서 처음부터 해우던 중 메모리 구조를 공부하며 확실히 다질 수 있었다
보통 스택 영역은 처음에 최대 값을 지정해 놓는다. 기본적으로 1mb라는 작은값이 지정되어있다고 알고 있다.
힙과 스택은 서로를 향해 커지고 이로인해 영역침범이 발생할 수 있으며 이때 오버플로우가 나게 된다.
힙과 스택영역의 차이는 힙은 동적 할당으로 사용자가 직접 할당하고 해제관리를 해줘야하며 해제하지 않으면 메모리 누수로 사용하지 않는 메모리구역이 계속 메모리에 쌓일수도 있다.
스택영역은 스코프를 벗어나면 메모리가 해제되기때문에 더 편하지만 스코프 영역 밖에서는 사용할 수 없다
이를 위해서 정적으로 static키워드를 사용하면 데이터 영역에 할당되는데 이것은 전역변수와 같은 공간이다
사용하는데에는 차이점이 있지만 정적 변수와 전역변수는 공통점도 있다.
'c++ 잊었던것, 사소한것' 카테고리의 다른 글
static 클래스 멤버 변수는 클래스 밖에서(전역범위) 초기화를 진행해주어야 한다. (0) | 2024.01.25 |
---|---|
두 값이 다를 때 xor 이용해 추가 메모리없이 값을 교환가능, 세 변수중 두 변수가 값이 같고 하나가 다를때 하나 찾기 (0) | 2024.01.21 |
백준 5597 배열 초기화 안해서 틀렸는데 (0) | 2024.01.18 |