이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
이승우 손님
|
올려짐: 2006년6월17일 14:07 주제: 초기화하지 않은 변수에 assign 하는 문제에 대한 질문입니다. |
|
|
안녕하세요? 숙제하다 궁금한게 생겼는데요.
초기화하지 않은 변수에 assign을 하면 어떻게 처리되야 하나요?
예를 들어,
이러한 코드가 있을때 이전에 x 에 대한 언급이 없다면 어떻게 처리가 되야 되는건지 잘 모르겠네요, 제가 제출한 숙제에서는 x 가 메모리에 없는 경우는
경고 메세지를 출력한 후 a에 대입하는 식으로 진행했는데요, 모범답안을 보면 없던 x가 생성되면서 진행되네요.
이 질문이 문제가 되는 이유는 저희가 구현한 프로그램이 다음과 같은 코드에서 문제가 발생하기 때문입니다.
코드: | a := malloc(5);
a := a + 5;
*a := 1
|
위와 같은 코드에서 malloc으로 5개의 공간을 생성한 다음 + 5 를 해주면 실제로 생성되지 않은 공간을 가리키는데요. *a := 1 을 실행하는 순간에 앞에서 예를 든 x처럼 메모리 공간이 생성이 되네요..
이대로 두어도 상관없는지, 그것이 아니면 생성되지 않은 변수에
값을 assign 할 때 어떻게 처리해야 하는지 알려주시길 바랍니다. |
|
위로 |
|
|
진민식
가입: 2006년 3월 21일 올린 글: 67
|
올려짐: 2006년6월17일 17:26 주제: |
|
|
위의 경우는 x라는 주소에 1의 값이 들어 가게 됩니다.
이는 x는 프로그램 상의 variable이고
프로그램상의 variable에 대한 주소는(이 경우 x)
는 존재하는 것이기 때문입니다.
코드: | a := malloc(5);
a := a + 5;
*a := 1 |
위와 같은 경우는 a가 가리키는 곳이 5개 짜리 array의
6번째 주소를 가리키게 되는 것으로 존재하지 않는
주소에 값을 쓰는 것이 되어서
semantics상에서 error가 됩니다. |
|
위로 |
|
|
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|