시도하는코딩
72
2019-10-29 09:58:32 작성 2019-10-29 10:14:42 수정됨
5
140

메모리공간에 대한 질문 (코드,데이터,스택,힙 영역)


#include <stdio.h>

int price[10];

int main(void){

  char *arr;

  static int num = 7;

  char *str = "Hello Seoul\n";

  arr = (char *) malloc(10);

}


이러한 코드에서

1) int price[10]; 이 존재하는 공간은 데이터 영역이 맞나요? 전역변수여서 그렇게 생각했습니다.

2) char *arr;이 존재하는 공간은 스택 영역이 맞나요? main함수안에 있는 지역변수라고 생각해서 스택영역이라 생각했습니다.

3) static int num; 이 존재하는 공간은 데이터영역이 맞나요? 정적변수라서 그렇게 생각했습니다.

4)문자열 "Hello Seoul\n"이 존재하는 공간은 코드영역이 맞나요? 그리고 코드영역이 정확히 뭔지몰라서 구글링을했더니 이해하기 쉬운 예시는 없어서 코드영역에 대한 예시몇개좀 알려주시면 감사하겠습니다.

그리고 만약에 이 문자열이 코드영역이 맞다면 왜 코드영역에 들어가는지? 도 알고싶습니다.

5)malloc()으로 할당받은 메모리가 존재하는 공간은 힙 영역이 맞나요? 힙은 동적할당을 받아야되는데 그게 malloc()이 해주는 것으로 알고 있습니다.


고수님들의 답변 부탁드립니다.. 찾는다고 찾았지만 뭔가 부정확하게 알고 있는 것 같아서.

0
0
  • 답변 5

  • 0
  • 시도하는코딩
    72
    2019-10-29 10:41:02

    yamanin 

    그럼 static 변수는 main함수 내에서 정의되었기 때문에 저  블로그의 말대로라면 정적변수가 아니라 지역변수로 선언되게 되는것 인가요? 그래서 stack영역인것인지요?

    0
  • yamanin
    1k
    2019-10-29 10:45:37
    0
  • 시도하는코딩
    72
    2019-10-29 10:59:55

    yamanin

    답변 감사합니다.

    다른 궁금증은 풀렸는데 아직 코드영역에 대해서는 이해가 잘 가지가 않습니다. 특히 제가올린 저 문자열이 코드영역인지도 아직도 헷갈리고 말로는 상수,작성한 코드,컴파일된 기계어라는데.printf("~~") 큰따옴표 안에 들어가는 저런 것들이 코드영역 인가요?

    0
  • yamanin
    1k
    2019-10-29 11:02:30

    c는 취업이후로 해본적이 없어서 잘 모릅니다. 구글이 도와줄꺼에요.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.