static 영역에 따른...
글쓴이: leolo / 작성시간: 일, 2004/02/15 - 10:24오후
질문을 드립니다.
먼저, 메모리의 정적 영역을 일반적으로 2가지로 나누는 것으로 알고 있습니다.
uninitialized static data, initialized static data로 나누는 데요.
그럼, 아래에서,
예제 1,
int myarray[5000] = { 1, 2, 3, 4};
int main(void){
myarray[0] = 3;
return 0;
}
예제 2,
int myarray[5000];
int main(void){
myarray[0] = 3;
return 0;
}
예제 1이 initialized static data이고 예제 2가 uninitialized static data로
알고 있습니다. 그러면,
배열이 함수 main() 속으로 들어가면 메모리의 stack영역에 들어가는 것이 되나요? 제 생각에는 stack 영역에 들어가는 것 같은데..
다음으로
char *str = "korea";
의 경우 메모리의 어디에 속하는지 알려주세요. 물론, 함수 내부에 존재할 경우..
듣기로는 "korea"가 메모리의 static영역에 속하게 되고 str 변수가 stack영역에 속한다고 하던데요.. 좀 알려주세요..
또한, 이 내용이 함수 외부에 존재할 경우도 결과가 같은지 알고 싶습니다.
Forums:
gdb 로 이렇게 해보세요[code:1]info symbol 변수
gdb 로 이렇게 해보세요
이렇게 쓰면 그 데이터가 어느 심볼테이블에 속해 있는지 정보가
나옵니다
참 그리고 함수(main 을 포함한 모든 함수)의 변수는 아시는 데로 스택영역에 있으니 그 주소는 stack 영역을 가르키니 포인터 주소가 가르키고 있는곳에 주소를 info symbol 로 보셔야 정확한 영역을 알 수 있습니다.
또한
하시면 각 영역마다 자세하게 hexa code 나 ascii 값으로 나옵니다
- advanced -
이 질문에 관한 테스트objdump와 gdb를 사용했었습니다.
이 질문에 관한 테스트
objdump와 gdb를 사용했었습니다.
http://www.ezdoum.com/stories.php?story=02/08/24/6098584
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
댓글 달기