안녕하세요. 아래와 같은 코드에서 에러가 발생 합니다.  

1번 코드와 2번 코드는 p1배열에 크기만 다름니다.  p1[2] 와 p1[10] 의 차이 입니다. 

그런데 배열의 크기를 10으로 했을시 segmentation fault 가 나는 이유를 모르겠습니다. 

조언 부탁드립니다. 감사합니다. 


환경 

sama5d35ek 보드 

arm-linux-gnueabi-gcc

kernel 3.10 


-1번 코드-------------------------------------------------------

#include <stdio.h>

#include <malloc.h>


int main(int argc, const char * argv[]) {

    char p1[2];

    char* p;

        p = (char*)malloc(1024*1024);

        if (p == NULL) {

            printf( "malloc() returned NULL\n");

            return 1;

        }

    printf("pointer adderss heap space  %p\n", p);

    printf("pointer adderss stack space  %p\n", p1);

    return 0;

}

결과: 

[root@ppp ~]# ./heapcheck                                                                                                                                  

pointer adderss heap space  0x76d46008                                                                                                                     

pointer adderss stack space  0x7ec93a38 

-2번 코드---------------------------------------------------------

#include <stdio.h>

#include <malloc.h>


int main(int argc, const char * argv[]) {

    char p1[10];

    char* p;

        p = (char*)malloc(1024*1024);

        if (p == NULL) {

            printf"malloc() returned NULL\n");

            return 1;

        }

    printf("pointer adderss heap space  %p\n", p);

    printf("pointer adderss stack space  %p\n", p1);

    return 0;

}

결과 : 

[root@ppp ~]# ./heapcheck                                                                                                                                  

Segmentation fault