나는 C 언어를 배우고 있으며 몇 가지 질문이 있습니다. int i = 0
과 같은 변수를 선언 할 때. 에 스택에 주소가 있습니다. 맞습니까?C 스택의 데이터 구성?
메모리에서 함수가 어떻게 구성되어 있는지 궁금합니다. 예를 들어, 다음과 같은 함수가 있습니다.
int myF() {
int x = 2, y = 3;
int z = x + y;
return x;
}
이 방법은 스택에서 어떻게 구성되어 있습니까? "myF"이라는 이름의 메모리 주소가 다른 varialbes와 너무 비슷합니까? 그리고 "myF"은 기능의 끝 부분을 나타내는 끝 주소와 같아야합니다.
내가 틀렸어?
고마워요.
컴파일러에 따라 C 코드의 어셈블리 목록을 만드는 것이 도움이 될 수 있습니다. 이렇게하면 지침이 표시되고 더 잘 이해할 수 있습니다. –
C는 스택을 지정하지 않으므로 자동 변수가 배치되는 방법과 특정 구현에 따라 달라집니다. – user611775
일반적으로 변수는 스택에서 끝나지만 전체적으로 최적화되거나 레지스터에서만 살 수 있습니다 (예 :). 컴파일러가 코드를 번역 한 방법에 대해 아무 것도 가정하지 마십시오. – pmg