문자열은 정적메모리에 할당된다고 하는데 정적메모리가 뭡니까??
차나
일반적으로, 큰따옴표로 둘러싸인 문자열은 실행 화일의 일부인 데이터 세그먼트에 저장된다. 프로그램이 메모리에 적재될 때 그 문자열도 함께 적재된다. 이때 큰따옴표로 둘러싸인 문자열은 정적 메모리에 있다고 말한다.
책에서 문자열을 설명하는데요, 여기서 말하는 정적메모리는 어디를 말하나요?
정적지역변수처럼 데이터영역에 할당되는 거를 말하는 건가요??
-
수예
프로그램에 대해서 정적. 예 잘 알겠습니다. 좋은 표현이라서 머리에 잘 들어오네요. 깔끔한 정리 감사합니다.
-
그린나래
객체는 3가지 형태중 하나의 life time을 가집니다.
일반적인 객체는 automatic storage duration을 가지고, 이 속성을 가진 객체는 스코프를 벗어나면 사라지죠. 해당 스코프 안에선 정적입니다.
static으로 지정된 객체는 static storage duration을 가집니다. 이 속성을 가진 객체는 프로그램에 대해 정적입니다. 따라서 스코프를 벗어나던 말던 프로그램이 꺼지지만 않으면 쓰일수 있습니다.(물론 파일단위에서 int -
뿌닝
잘못된점 지적해주셔서 감사드립니다.
-
사랑해
static(정적)변수는 프로그램을 메모리에 로딩할 때 데이터영역에 할당되는 거 아닌가요? 정적지역변수는 지역변수와 접근범위만 같고 수명은 정적인 것으로 공부했거든요. 한 마디로 정적지역변수는 스택변수하고 범위만 빼놓고 사실상 남남인 상관없는 것으로 알고 있습니다만 이에 대해선 어떻게 생각하십니까?
-
니지
그리고 아래에서 static 이야기 나오는데...
static으로 생성된 심볼의 경우 프로그램이 실행되는 시점에서 스택에 올라온 이후 해당 스코프를 벗어나도 해제되지 않도록 하는 예약어 입니다.
static이 힙에 올라오지 않습니다. 힙에 올라오게 하는 방법은 적어도 c표준상에선 malloc과 같은 함수를 사용하는것 뿐입니다. -
아잉누님
저 정적 문자열 상수가 저장되는 공간은 보통 스택이라고 부르는 공간중 프로그램이 메모리에 올라오면서 사용한 스택의 제일 하단부에 가까운 공간입니다. 이 공간은 프로그램 자기 자신이 사용하는 공간이기 때문에 해당 프로그램이 종료될때까지 메모리 공간이 사라지지 않는다는 특성이 있고, 이런 특성때문에 위법적인 문법으로 보여도 적법하게 인정되는 특수한 문장사용도 가능합니다.
일반적인 정적변수(int a와 같은 식으로 할당한)도 정적 메모리에 잡히긴 하는데, 보