데이터 세그먼트 (Data Segment)에는 컴파일 시점에 값이 정해진 전역 변수 및 전역 상수들이 위치한다.

CPU가 세그먼트의 데이터를 읽을 수 있어야 하므로, 읽기 권한이 부여됩니다.

 
#include<stdio.h>
 
struct Man{
    int age;
    char sex;
    int id;
    char[12] name;
}
 
 
/**
* 아래의 전역 변수들은 초기값이 할당되어있기 때문에,
* Data Segment에 할당되게 된다.
*/
int globalVariable = 10;
Man man = {19, 'M', 201112010, "홍길동"};
int szman = sizeof(Man);
 
 
int main(){
	
	// .. 작업 수행 ..
 
	return 0;
}

데이터 세그먼트는 쓰기가 가능한 세그먼트와 쓰기가 불가능한 세그먼트로 다시 분류되는데, 쓰기가 가능한 세그먼트는 전역 변수와 같이 프로그램이 실해오디면서 값이 변할 수 있는 데이터들이 위치합니다.

이런 세그먼트는 Data 세그먼트라고 부릅니다.

반면 쓰기가 불가능한 세그먼트에는 프로그램이 실행되면서 값이 변하면 안되는 데이터들이 위치합니다. 전역으로 선언된 상수가 여기에 포함됩니다.

**전역변수: 프로그램에서 접근 가능한 변수

**정역상수: 전역 상수(Global Constant)는 프로그램 전체에서 접근 가능하며 변경할 수 없는 상수입니다.

아래는 데이터 세그먼트에 포함되는 여러 데이터의 유형입니다.

int data_num = 31337;                       // data
char data_rwstr[] = "writable_data";        // data
const char data_rostr[] = "readonly_data";  // rodata
char *str_ptr = "readonly";  // str_ptr은 data, 문자열은 rodata
int main() { ... }