주소 바인딩에 관한 질문입니다.

corenc의 이미지

주소 바인딩 시간에 관한 질문입니다.
시점에 따라 분류하면 컴파일시간, 적재시간, 실행시간 입니다.

배열을 선언하는데 int num[9]; 이런 식으로 하고
동적 할당을 쓰면 int *num=(int*)malloc(sizeof(int)*10); 이런 식으로 하는데요

여기서 배열로 선언한것이 컴파일 시간에 바인딩 한것이고
malloc을 써서 선언한것이 실행시간에 바인딩 되는것이 아닌가 싶습니다.

이게 맞나요? ??

실행파일로 만들어 놓으면 논리주소만 가지고 있다가
실제 메모리주소가 바인딩 되는 시간은?

nohmad의 이미지

C에서 배열 선언은 컴파일 타임에 배열 크기가 완전하게 알려진다는 것을 전제하기에, 선언 위치에 따라, 전역 변수라면 data나 bss 영역에, 지역변수라면 스택에 얼마의 크기로 만들어질 것이라는 것을 분명하게 알 수 있습니다. data, bss, text, stack, heap 등에 대해서는 다음 그림을 참조.

스택은 함수 호출(프로그램 루틴)을 위한 임시 공간이어서 호출이 끝나면 사라지는 공간이고, C 언어에서는 함수 내에서 선언된 지역변수는 auto로 간주해서 함수가 종료하면 자동으로 소멸되는 특징이 있습니다.

참고로 스택의 특성과 C 언어의 auto 한정자 사이에는 일정한 관계가 있습니다. 물론 OS 아키텍쳐쪽의 용어(프로세스, 스택, 힙 등)와 프로그래밍 언어쪽의 용어(함수, 전역변수, 지역변수, auto 등)는 분리해서 사용하는 것이 바람직합니다만, C 언어가 현대의 지배적인 아키텍쳐를 주된 고려사항으로 해서 설계된 언어임을 생각한다면, 언어와 아키텍쳐 사이의 추상적인 개념을 서로 이어보는 것이 이러한 아키텍쳐 위에서 프로그래밍하는 사람에게 많은 도움이 됩니다.

malloc은 소위 '힙(heap)'이라고 부르는, 프로세스가 실행 중인 동안에 운영체제에 요구하여 할당받고, 메모리 공간을 할당받은 프로세스가 명시적으로 해제해야 할 의무가 있는 공간을 확보할 수 있게 해줍니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.