게시판 인덱스

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

malloc에서 할당된 메모리의 범위에 대해서...

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



가입: 2006년 5월 6일
올린 글: 5

올리기올려짐: 2006년6월15일 21:56    주제: malloc에서 할당된 메모리의 범위에 대해서... 인용과 함께 답변

malloc (readint) 등과 같이 쓰면 할당된 메모리의 사이즈가 음수가 될 수 있습니다. 이경우 프로그램이 정상적으로 동작한 경우라면 readint값이 양수이어야할테고 따라서 새로 할당된 메모리의 사이즈는 [1,infinite]일 것입니다.

제가 궁금한 것은 프로젝트에서 목표로 하는 것이 '정상적으로 프로그램이 동작했다고 가정할 때 가지게 되는 메모리의 범위'만 구하면 충분한 것인가입니다. 즉, 각각의 지점에서는 이전의 명령들의 수행에서 에러가 전혀 발생하지 않았다고 가정하고 메모리 상태를 유지하는 것이지요.
그렇다면 위와 같은 구문에서는 메모리의 크기가 [1,infinite]로 요약되어야 할것같은데(0 이하이면 에러이므로), 참고삼아 airac5를 보니 거기에서는 버퍼 사이즈의 범위에 음수를 사용하고 있네요.
위로
사용자 정보 보기 비밀 메시지 보내기
진민식



가입: 2006년 3월 21일
올린 글: 67

올리기올려짐: 2006년6월16일 14:24    주제: 인용과 함께 답변

인용:
제가 궁금한 것은 프로젝트에서 목표로 하는 것이 '정상적으로 프로그램이 동작했다고 가정할 때 가지게 되는 메모리의 범위'만 구하면 충분한 것인가입니다.


분석을 진행할때 선택하기 어려운 것 중에 하나는 error상황을 어떻게 처리할 것 인가 입니다.
코드:

   1: int main()
   2: {
   3:     int *a;
   4:
   5:     if (t) { z = -1;} else { z = 2;}
   6:
   7:     a = malloc(z);
   8:     a[0] = 1;   /* 13 */
   9:
  10:     return 0;
  11: }


위의 코드를 보면 8번째 줄에서 에러가 날 수 있습니다. 만약 정상적으로 처리되었다고
하고 어레이의 크기를 [1,2] 로 하고 분석을 진행했다면 8번째 라인의 에러를
찾기가 어려울 것 입니다.

물론 a에 할당된 어레이가 error일 수 있다는 정보를 저장하고 있다가, a[0]처럼
그 어레이의 원소값을 읽을 때 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