나는 아래의 간단한 C 프로그램 (TEST.C) 작성 : -모호한 행동은
#include<stdio.h>
int main()
{
return 0;
}
을하고 .bss라고 세그먼트의 크기 변화를 이해하는 follwing을 실행.
gcc test.c -o test
size test
출력
은 나왔다 : -text data bss dec hex filename
1115 552 8 1675 68b test
전 세계적으로 또는 정적 범위의 무엇이든을 선언하지 않았다. 따라서 bss 세그먼트 크기가 8 바이트 인 이유를 설명하십시오.
나는 다음과 같이 변경했다 : -#include<stdio.h>
int x; //declared global variable
int main()
{
return 0;
}
을하지만 놀랍게도, 출력은 이전과 동일했다 : -
text data bss dec hex filename
1115 552 8 1675 68b test
설명해주십시오. 예상대로
#include<stdio.h>
int x=67; //initialized global variable
int main()
{
return 0;
}
데이터 세그먼트 크기 증가,하지만 난 (아무것도 선언되지 때 8 반대로) BSS 세그먼트의 크기는 4 감소 기대하지 않았다 -이 : 나는 그 세계를 초기화. 설명 해주십시오.
text data bss dec hex filename
1115 556 4 1675 68b test
나는 또한 objdump 및 nm을 시도했지만 변수 x는 .bss (2 번째 경우)를 표시합니다. 그러나 크기 명령에는 bss 크기가 변경되지 않습니다.
다음 절차에 따라 : http://codingfox.com/10-7-memory-segments-code-data-bss/ 출력이 예상대로 완벽하게 발생합니다.