그리고 각 segment
용도별
code_segment = text_segment
{
code segment, text segment or simply as
text
대체로 코드 변조를 막기 위해 read-only? chk
대체로 프로그램 시작되어 끝날때까지 고정된 위치? 항상? chk
}
bss_segment
{
block starting symbol (abbreviated to
.bss or
bss) (wpen)
/// 이하, (segment라고는 보통 안하는 듯 한데.... 역시 memory에 위치하는 region으로는 다음 둘이 있다: stack, heap.) ///
stack ? 혹은
stack_segment ? - 이런 표현도 분명 봤었는데,.... MKCLEAR
stack segment
mkl
스택,stack
힙,heap - 이걸 heap segment라고 하는 건 못 봤다...
heap segment
이건 다른 메모리 상의 region들에 비해
- flexible
- dynamic
- 여러 것들의 위치가 동적으로 수시로 바뀌고 상당히 복잡하고 까다롭다. 그래서 (위에 열거한 다른 메모리 영역에 비해 상대적으로) 정교한 관리가 필요하다.
- runtime_library 아님 런타임 실행에서 메모리관리,memory_management 담당하는 어떤 주체가 심혈을 기울여 관리함.
여기에 있는 건 보통 dynamic memory 라 함 (당연히 DRAM의 그거랑 무관..) <- 이 줄 del ok
allocation(malloc in C, new in C++) vs. deallocation(free in C, delete in C++)
memory_allocation
memory_allocator
garbage_collection
더 이상 쓰이지 않음에도 alloc받은 걸 free하지 않아서 생기는 문제는 memory_leak.
free를 두 번 하는 double_free.
//// 기타 segment 관련 /////
Up: access_violation , fault ,
}