C언어에서 리터럴 상수도 메모리에 할당된다고들었습니다.
그렇다면
main함수안에
3;
이렇게 선언하면 main함수가 끝날때까지 메모리에 계속 남아있는겁니까?
1+2;
이렇게 연산에 의해서 상수가 선언될시 1,2가 아닌 3만 선언됩니까?
변수에 값을 저장할때
int var = 5;
이때 변수메모리만 할당하는게 아니라 상수5도 메모리에 할당합니까?
그러면 총 8바이트를 할당하게 되나요?
반복문을 사용할때
ex) for(i=0; i<n; i++)
i값은 증감연산으로 인해서 0부터 n까지 증가하는데
이때 증가하면서 저장되는값들도 상수로 선언되나요?
1) ㅇㅇ
2) ㄴㄴ 1,2도 같이 선언됨
3)ㅇㅇ
4) 0이랑 n만 저장됨
숫자 상수는 컴파일러가 그냥 인스트럭션에 때려박을 수도 있음. 딱히 숫자 3을 위한 공간이 할되지는 않는 경우가 대부분이고
인스트럭션에 들어가는건 immediate value라고 불리는 물건인데, 플랫폼/컴파일러 많이 탐
컴파일러마다다르겠지만 예를들어 mov eax 1, add eax 2 이런식으로쓸수도있고 mov eax 1, mov ebx 2, add eax, ebx 요렇게도가능 그리고 같은컴파일러더라도optimization level따라다름 그리고 자꾸 메모리얘기하는데 저명령어가 텍스트가되서 로더로 메모리에올려짐 여기서올릴때 유닉스계열은elf포맷에맞게 윈도우는
pe포맷에맞게올라감 로더도 스태틱로더 다이내믹로더 로분류되고 여튼간에길어지니까 3 4 학년학부과정에서배움