이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
김우재 손님
|
올려짐: 2005년10월19일 21:06 주제: memory allocation에서 이해할수 없는 문제.. |
|
|
주어진 틀에 보면
let in end가 이미 구현되어 있습니다.
여기서 새로 정하는 변수는 크기 1을 가지는 메모리를 할당받게 되는데요....
이 변수에 레코드를 넣어주면 (전 레코드타입을 id*loc.t*id*loc.t로 구현했습니다.)
할당된 이상으로 메모리를 쓰기 때문에, 그 뒤에 다른 변수 사용시 덮어씌어지는
현상이 일어날 것도 같은데요... 아무 이상없이 잘 됩니다..
도대체 메모리 allocation에서 사이즈가 어떤 크기 인지 궁금합니다.^^
--가령
let
x := {i := 1, j := 2}
in
let
y := 0
in
y := malloc(50);
(y) := 5;
write x.i;
write x.j;
write *y
end
end
를 했을때 x에 1의 크기만 할당되므로 레코드를 넣을때 뒤부분 필드들은 할당되
지 않은 공간에 씌여지고 나중에 y에 덮어씌어 질줄 알았는데... 그렇지 않고
아무 문제 없었다는...... 이유를 알고 싶습니다.
end |
|
위로 |
|
|
손님
|
올려짐: 2005년10월19일 21:23 주제: Re: memory allocation에서 이해할수 없는 문제.. |
|
|
김우재 씀: | 주어진 틀에 보면
let in end가 이미 구현되어 있습니다.
여기서 새로 정하는 변수는 크기 1을 가지는 메모리를 할당받게 되는데요....
이 변수에 레코드를 넣어주면 (전 레코드타입을 id*loc.t*id*loc.t로 구현했습니다.)
할당된 이상으로 메모리를 쓰기 때문에, 그 뒤에 다른 변수 사용시 덮어씌어지는
현상이 일어날 것도 같은데요... 아무 이상없이 잘 됩니다..
도대체 메모리 allocation에서 사이즈가 어떤 크기 인지 궁금합니다.^^
--가령
let
x := {i := 1, j := 2}
in
let
y := 0
in
y := malloc(50);
(y) := 5;
write x.i;
write x.j;
write *y
end
end
를 했을때 x에 1의 크기만 할당되므로 레코드를 넣을때 뒤부분 필드들은 할당되
지 않은 공간에 씌여지고 나중에 y에 덮어씌어 질줄 알았는데... 그렇지 않고
아무 문제 없었다는...... 이유를 알고 싶습니다.
end |
일종의 가상 메모리라고 생각하면 어떨까요, 모든 변수들은 하나의 공간만을 가지는 가상 메모리요.
레코드도 정수도 한 공간만 점유한다고 생각하면 되지 않을까요? |
|
위로 |
|
|
현경렬
가입: 2005년 9월 28일 올린 글: 19 위치: 스쿨
|
올려짐: 2005년10월19일 21:24 주제: Re: memory allocation에서 이해할수 없는 문제.. |
|
|
인용: | 일종의 가상 메모리라고 생각하면 어떨까요, 모든 변수들은 하나의 공간만을 가지는 가상 메모리요.
레코드도 정수도 한 공간만 점유한다고 생각하면 되지 않을까요? |
제가 쓴 글입니다 _________________ Programming Rumble |
|
위로 |
|
|
|