내가 아는 것은 전역 및 정적 변수가 .data
세그먼트에 저장 되고 초기화되지 않은 데이터가 .bss
세그먼트에 있다는 것입니다. 내가 이해하지 못하는 것은 왜 초기화되지 않은 변수에 대한 전용 세그먼트가 있다는 것입니까? 초기화되지 않은 변수에 런타임에 할당 된 값이있는 경우 변수가 여전히 .bss
세그먼트에만 존재 합니까?
다음 프로그램 a
에서 .data
세그먼트 b
에 있고 .bss
세그먼트에 있습니다. 그 맞습니까? 내 이해가 잘못된 경우 친절하게 수정하십시오.
#include <stdio.h>
#include <stdlib.h>
int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
int b[20]; /* Uninitialized, so in the .bss and will not occupy space for 20 * sizeof (int) */
int main ()
{
;
}
또한 다음 프로그램을 고려하십시오.
#include <stdio.h>
#include <stdlib.h>
int var[10]; /* Uninitialized so in .bss */
int main ()
{
var[0] = 20 /* **Initialized, where this 'var' will be ?** */
}