C scope와 메모리 스택에 관한 질문입니다.
글쓴이: jeff_an / 작성시간: 화, 2016/11/08 - 11:30오후
int main(void) { int fd[2], status; pid_t pid; if (pipe(fd) == -1) { perror("pipe"); exit(1); } switch (pid = fork()) { case -1: perror("fork"); exit(1); break; case 0: close(fd[1]); if (fd[0] != 0) { dup2(fd[0], 0); close(fd[0]); } execlp("/usr/bin/wc", "wc", "-l", NULL); exit(2); break; default: close(fd[0]); { char *str = "test line\n"; int n, i; for (i = 0; i < 10; i++) write(fd[1], str, strlen(str)); } close(fd[1]); wait(NULL); break; } return 0; }
위 default 케이스를 보시면 제가 임의로 { } 범위설정해서 str, n, i 변수를 선언하고 사용하고 있는데, 이런식으로 프로그래밍하면 실제로 런타임때 스택이 어떻게 변화하는지 궁금하네요.
함수의 경우에는 스택 프레임이 생성되고 그 범위내에 데이터를 저장할 공간들이 생성된다고 알고 있습니다. 만약에 저런식으로 그냥 scope만 설정하고 변수 선언, 초기화 작업후 사용할 땐 스택 프레임이 생성되는지 아니면 그냥 변수를 저장할 공간만 생성이 되는지 궁금합니다.
Forums:
댓글 달기