11.2강 19:43 질문이 있습니다.
공부한 내용을 테스트해보려고 다음 코드를 작성했습니다.
#include <stdio.h>
#include <stdlib.h>
int var_global_initialized = 1;
int var_global_uninitialized;
void func_test();
int main(void)
{
// 값이 저장되는 메모리 영역과 그 주소
// Code 영역
printf("%llu [Code]\n", (unsigned long long)"I am a String.");
// Data 영역
printf("%llu [Data]\n", (unsigned long long)&var_global_initialized);
// BSS 영역
printf("%llu [BSS]\n", (unsigned long long)&var_global_uninitialized);
// Heap 영역
char* var_dynamic = (char*)malloc(sizeof(char) * 100);
printf("%llu [Heap]\n", (unsigned long long)var_dynamic);
// Stack 영역
func_test();
return 0;
}
void func_test() {
int var_local = 0;
printf("%llu [Stack]\n", (unsigned long long)&var_local);
};
메모리 영역 별 간격이 너무 작게 출력되는데 올바르게 작성한게 맞을까요..??

참조
온라인 컴파일러 링크
문자열 리터럴이 저장되는 메모리 영역 링크
메모리 영역별 예제 코드 링크
답변 1
2
안녕하세요, 답변 도우미 Soobak 입니다.
각 메모리 영역은 운영체제와 컴파일러의 구현에 따라 할당되며, 특히 다른 프로세스와의 격리를 위해 고유한 주소 공간을 사용합니다.
또한, 실제로는 운영체제와 하드웨어의 보다 복잡한 상호 작용에 의해서 결정됩니다.
따라서, 실제 메모리 주소 간격 보다 시스템의 메모리 정책과 현재 프로세스의 메모리 상태 등의 영향을 고려해야 합니다.
코드 자체는 올바르게 작성하신 것으로 보이기 때문에 메모리 영역 간의 간격에 대해서는 걱정하지 않으셔도 됩니다.
Export template 안됨
1
19
2
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
54
3
main 함수에서 왜 int만 선언이 되는걸까요
1
56
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
54
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
49
1
프로토타입과 함수간의 인자 불일치
1
73
2
12.12 헤더 관련 질문
1
60
2
Visual Studio Community 2026 사용 문의
1
138
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
61
2
getchar(), putchar()
1
93
3
강의자리ㅛ
1
80
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
113
2
소스파일안에 여러 파일
1
76
2
F5와 F7의 차이
1
77
2
c = TWO * (a+b); 에서 a와 b는?
1
58
2
; 세미콜론을 붙이는 기준에 문의
1
70
1
Step over 기능 문의
1
53
2
2.6 강의 따옴표 출력 규칙 문의
1
75
2
int main 함수 관련 오류 문의
1
67
2
13.4 words[0]
0
61
2
11.7 함수를 구현해 봤습니다.
1
62
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
65
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
53
2
11.6 fit_str함수를 구현해 봤습니다.
1
53
2





