2012-02-29 2 views
0

샘플 C++ 프로그램의 경우 linux에서 size 명령을 사용하여 다음 정보를 얻었습니다.오브젝트 파일과 실행 파일 간의 다양한 필드 크기의 차이

text data  bss  dec  hex filename 
1908  304  152 2364  93c test 
346  4  1  351  15f test.o 

나는 출력물이 크기라고 읽었습니다. 텍스트는 실제 코드이며, bss는 초기화되지 않은 전역 변수를 포함하고 데이터는 초기화 및 초기화되지 않은 세그먼트를 모두 추가합니다. 내 질문은 이유는 크기가 개체 파일과 실행 파일, 특히 텍스트에서 다른 이유는 소스 코드가 메모리에서 일반적으로 사용되기 때문입니까? 전역 변수가 없으면 왜 bss에 표시된 크기가 있습니까?

#include <iostream> 

using namespace std; 

    int main() 
    { 
     cout << "Hello World!" << endl ; 

     return 0; 
    } 

당신을 감사합니다

는 샘플 코드 파일은 다음과 같습니다 포함!

답변

1

개체 파일에 코드가 포함되어 있기 때문에 크기가 다릅니다. 링크 된 파일에는 컴파일러 C++ 프레임 워크 (즉, main을 호출하는 데 필요한 코드)와 다양한 표준 라이브러리 (C 및 C++ 표준 라이브러리)가 포함됩니다.

+0

감사합니다. 전역 변수가없는 경우에도 전역 변수의 크기를 표시하는 이유는 무엇입니까? 컴파일러/링커 삽입 정보 때문에? – Izza

+0

예. 더 나은 아이디어를 얻기 위해 코드를 디 컴파일해야합니다. 특히 "귀뚜라미 (cout)"와 "씬 (cin)"글로벌 광고가 있습니다. –