게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

초기화하지 않은 변수에 assign 하는 문제에 대한 질문입니다.

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2006)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
이승우
손님





올리기올려짐: 2006년6월17일 14:07    주제: 초기화하지 않은 변수에 assign 하는 문제에 대한 질문입니다. 인용과 함께 답변

안녕하세요? 숙제하다 궁금한게 생겼는데요.
초기화하지 않은 변수에 assign을 하면 어떻게 처리되야 하나요?

예를 들어,

코드:
a := &x;
*a := 1

이러한 코드가 있을때 이전에 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    주제: 인용과 함께 답변

코드:
a := &x;
*a := 1


위의 경우는 x라는 주소에 1의 값이 들어 가게 됩니다.
이는 x는 프로그램 상의 variable이고
프로그램상의 variable에 대한 주소는(이 경우 x)
는 존재하는 것이기 때문입니다.

코드:
a := malloc(5);
a := a + 5;
*a := 1


위와 같은 경우는 a가 가리키는 곳이 5개 짜리 array의
6번째 주소를 가리키게 되는 것으로 존재하지 않는
주소에 값을 쓰는 것이 되어서
semantics상에서 error가 됩니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2006) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay