코드가 안 붙혀질 것 같아서 그냥 링크 달음
static이 오히려 메모리자원이 왜 공유가 안됨?
지역변수 전역변수도 이해 잘 모르는 거 같은데
아니요 그게 아니죠 오히려 static쓰니까 메모리 자원이 공유가 안되죠
주장하는건 좋음 제가 틀릴수도 있음(실제로 답변하면서 이런거 틀렸다고 많이 들었음)
남이 얘기를 하면 니가 직접 짜면 되는건데 왜 안짜고 가르쳐 주려고 하심
static 자원은 프로그램이 끝날 때 까지 메모리는 가지고 있음.. 그럼 왜 참조가 안되냐고?
지역변수니까..
물론 정적 전역변수는 전역이 다른 파일까지 참조가능한데, 정적은 내부만 되니까 내부파일만 참여가능한 구조인데
이제 여기서 님이 답해보셈
그건 블록 내에서 사용된 static 변수에 한정된 이야기이고;; 외부에서 사용된 static은 분할컴파일시 영역범위를 지정해주는 의미임
그 얘기를 방금 본문에서 했잖음
위에 정리된거 같으니 그냥 말안할께
메모리 공유라는 단어 뜻을 다르게 해석하면 오해할 수도 있을 것 같네요. a.c와 b.c에 static int a;로 둘 다 선언하면 둘은 다른 object를 가리킵니다. 그래서 메모리 공유가 안된다는 뜻이었습니다. static이 메모리를 유지하는건 아는데 그건 메모리 유지의 개념이지, 메모리 공간을 공유한다는 뜻이면 linkage개념으로 접근하는게 맞지않나요? 한 메모리 공간을 같은 이름의 변수들이 공유하니까요.
저 코드에서도 메모리가 공유?됐다기보단 메모리가 유지됐다고 저는 봤습니다. 그래서 그렇게 말씀드렸는데 오해가 풀렸으면 좋겠네요.
메모리 공간을 공유해도 위와 같이 static 지역변수로 참조한 경우는 메모리가 남아있지만 참조가 안되잖음
제가 생각하기에 메모리 공간을 공유하는 예시는 a.c 파일에 int a; 라고 전역변수로 선언하고, b.c 파일에 extern int a; 라고 선언하는 경우였습니다. 그럼 두 a 변수는 같은 메모리 공간을 공유하니까요.
먼 말인지 이해가 된듯 나는 메모리 영역에 대해서 생각하고 있으니 공유를 그렇게 봤음
넵 저도 220.70님 말씀이 이해가 됩니다. 단어 의미를 다르게 생각해서 말이 어긋낫던 것 같습니다.
이건 프로세스 단에서 질문하는게 아니라 컴파일 - 링킹과정ㅇ ㅔ대한 질문이다