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:


댓글 달기