stack 과 heap의 경계?
글쓴이: ring9714 / 작성시간: 목, 2020/06/04 - 9:25오후
stack 은 보통 아래로쌓이고 heap은 위로쌓이잖아요?
근데 심심해서 코드를 작성해서 둘이 만나게하려했는데 실제로 만나진 않네요?
힙과 스택사이에도 공간이 있나요?
코드는
#include
#include
void rec(int depth)
{
int stack[1000];
printf(depth : %d\n", depth);
printf("stack : %p ", stack); //스택 할당주소
int*ptr = (int*)malloc(sizeof(int)*1000);
printf("heap : %p\n, ptr); //힙 할당주소
rec(++depth);
}
int main()
{
int depth = 0;
rec(depth);
}
찾아보니 스택에 제한이 있다고해서 제한을 풀어줬는데도 튕길때 마지막 값이 같진 않네요
Forums:
#include <stdio.h>
PC 의 경우 heap 과 stack 이 너무 많이 떨어져 있네요...
실제, embedded 인 경우 stack 과 heap 이 만나기도 합니다...
그렇군요..!
ㅎㅎ
몇 가지
자잘한 디테일은 제외하더라도 스택은 위에서 아래로 자라고 힙은 아래에서 위로 자라니까요. amd64에서는, 행여 둘이 붙어 있다 해도, 각각의 시작 주소 차이는 근사적으로 스택 사이즈 + 힙 사이즈만큼 나게 되죠.
저도 궁금해서 찾아보니
https://commons.wikimedia.org/wiki/File:Linux_Virtual_Memory_Layout_64bit.svg
64비트 amd + 리눅스에서는 붙어 있지 않네요.
댓글 달기