운영체제나 컴구에서 배울때는 stack이 top에서 bottom으로 주소가 감소하면서 확장하고, heap은 bottom에서 top으로 주소가 증가하면서 확장한다고 배웠는데... 윈도우 환경에서는 heap을 할당할때마다 주소값이 증가하고, stack은 주소값이 감소하는걸 확인했는데 리눅스 환경에서는 오히려 heap이랑 stack둘다 주소값이 감소하면서 확장하는데 이게 어케된거에영?.. 스택오버플로우에서 찾아보고 있긴한데, 아직 제대로 해답을 얻지 못해서...
아래는 heap 주소값만 무한루프로 출력했습니다. 코드는 단순해서 적어서 올립니다.
void main(){
int* num;
while(1){
num = (int*)malloc(sizeof(int)*10000000);
printf("%p\n", num);
}
}
그리고 일정 루프후에 갑자기 주소가 이렇게 점프하는데 이거는 왜 이런건가요?
교수한테 물어보고 싶은데,,,, 이때까지 화만내고 알아서 찾으라고 해서... 더이상 물어볼 의욕이 안남...
gdb로 디버깅해봐
페이징
16의 배수로 할당하는게 계산하기 더 좋겠는데? - dc App