.bss 영역의 용도

dingdong77의 이미지

프로세스가 메모리에 올라가면 .text, .data 이런 영역들이 있잖아요?
여기서 .bss 영역의 용도가 어떤 것들이 있나요?

일단 초기값이 0이거나 없는 전역변수들이 들어갈 거라는 건 알아내었는데 그 밖에 다른 쓰임이 뭐뭐가 있나요?

Necromancer의 이미지

초기값 없는 전역변수... (0이라도 강제 지정되는 값이라면 bss에 안들어감)

동적 메모리 할당

Written By the Black Knight of Destruction

vacancy의 이미지

제 기억엔 :roll:
0으로 초기화되는 전역변수도 .bss 섹션에 들어갔던 것 같네요.

그리고, 동적 메모리 할당은 heap에서 이루어지니까,
.bss 섹션에 들어가지 않을 것 같은데요.

leolo의 이미지

비초기화 데이터 영역(Uninitialized data segment)
bbs라고도 불리며 buf와 같이 함수밖에 존재하는 초기값을 갖지 않는 변수들이 이 영역에 존재하게 된다. 참고로 이 비초기화 데이터 영역에 할당된 변수들은 프로세스 생성시에 모두 0으로 초기화된다.

말 그대로 전역변수이네요..

int count = 26 <- 초기화된 테이터영역
char buf[10];   <- 비초기화 데이터 영역
int main()
{
    buf[count]='\0';

}

실력이 있으면 삶이 편하다... 영차 영차...

pynoos의 이미지

dingdong77 wrote:
프로세스가 메모리에 올라가면 .text, .data 이런 영역들이 있잖아요?
여기서 .bss 영역의 용도가 어떤 것들이 있나요?

일단 초기값이 0이거나 없는 전역변수들이 들어갈 거라는 건 알아내었는데 그 밖에 다른 쓰임이 뭐뭐가 있나요?


다른 용도의 쓰임은 거의 없습니다.

단지, 생성되는 Object에서 실제 runtime시 원하는 양만큼 잡아먹지 않는 다는 것만 알면됩니다. 실제로 이름과 사이즈만 기억해둡니다.