Memory layout
This presentation is the property of its rightful owner.
Sponsored Links
1 / 7

Memory Layout PowerPoint PPT Presentation


  • 261 Views
  • Uploaded on
  • Presentation posted in: General

Memory Layout. 2006242108 전중현. Memory 구조. Text 영역 Program 코드영역 (CPU 에 의해 수행되는 기계어 명령어들이 모여있는 곳 ) Data 영역 전역변수와 정적 (static) 변수가 할당된 곳 . 프로그램 시작과 동시에 할당되고 프로그램이 종료되어야 메모리에서 소멸된다 . (1) 초기화된 데이터영역 . (2) 비초기화된 데이터영역 . Bss (block started by symbol) 라고도 함 Stack 영역

Download Presentation

Memory Layout

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Memory layout

Memory Layout

2006242108 전중현


Memory

Memory 구조

  • Text 영역

    Program코드영역 (CPU에 의해 수행되는 기계어 명령어들이 모여있는 곳)

  • Data 영역

    전역변수와 정적(static)변수가 할당된 곳. 프로그램 시작과 동시에

    할당되고 프로그램이 종료되어야 메모리에서 소멸된다.

    (1) 초기화된 데이터영역.

    (2) 비초기화된 데이터영역. Bss(block started by symbol)라고도 함

  • Stack 영역

    지역변수와 매개변수가 저장되는 곳.

    이 영역에 할당된 변수는 함수 호출이

    끝나면 사라진다.

  • Heap 영역

    동적 메모리 할당하는 곳. 프로그래머가

    할당 및 해제를 해주어야 한다.


Memory layout 1340806

#include <stdio.h>

#include <malloc.h>

static int a, b=10;

intc,d=10;

void foo(int x)

{

int y, *f = malloc(10);

static intz,v=10;

printf("foo함수의초기화된내부변수x의메모리위치: 0x%X\n",&x);

printf("foo함수의비초기화내부변수y의메모리위치: 0x%X\n\n",&y);

printf("foo함수의비초기화정적변수z의메모리위치: 0x%X\n",&z);

printf("foo함수의초기화된정적변수v의메모리위치: 0x%X\n\n",&v);

printf("foo함수의동적할당된f의메모리위치: 0x%X\n",&(*f));

printf("foo함수의포인터변수f의메모리위치: 0x%X\n\n",&f);

}

void main()

{

int *p, q, r=10;

printf("main함수의메모리위치: 0x%X \n",&main);

printf("foo함수의메모리위치: 0x%X \n\n",&foo);

printf("비초기화정적변수a의메모리위치: 0x%X \n",&a);

printf("초기화된정적변수b의메모리위치: 0x%X \n\n",&b);

printf("비초기화전역변수c의메모리위치: 0x%X \n",&c);

printf("초기화된전역변수d의메모리위치: 0x%X \n\n",&d);

p = malloc(10);

printf("main함수의비초기화내부변수q의메모리위치: 0x%X \n",&q);

printf("main함수의초기화된내부변수r의메모리위치: 0x%X \n\n",&r);

printf("동적할당된변수*p의메모리위치: 0x%X \n",&(*p));

printf("main함수의포인터변수p의메모리위치: 0x%X \n\n",&p);

foo(1);

free(p);

}

Memory

b

foo

a

v

c

d

f

z

*p

*f

q

r

p

x

y

main

Text영역

0x418000

0x13FF64

0x13FF58

0x35D20

0x418154

0x41817C

0x418004

0x418008

0x41112C

0x41114A

0x35D58

0x13FF54

0x13FF48

0x13FF60

0x13FF74

0x418150

Data영역

Bss영역

Heap영역

Stack영역


Memory layout 1340806

프로그램 출력결과


Memory layout 1340806

Text영역

Data영역

Bss영역

Heap영역

Stack영역


Memory layout 1340806

QnA?!


  • Login