Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[4439] Re:밑에 질문에 이은 질문입니다.
김시환 [godson2] 1213 읽음    2004-05-18 01:48
event1.buffer = (int *)malloc(sizeof(int)*(event1.buff_size));
이 부분이 동적생성 부분인거 같은데 buff_size 의 크기가 전혀 나타나 있지 않네요..
void main()
{
     event1.size = 1 ;
     event1.count= 0 ;
     event1.buff_size = 100 ;              // 100 : 버퍼크기 값  <-- 사이즈 추가
     event1.buffer = (int *)malloc(sizeof(int)*(event1.buff_size));
     test();
     printf(" buffer[0] = %d\n",event1.buffer[event1.count]) ;
     printf(" event1.count %d\n",event1.count);
}

printf(" buffer[0] = %d\n",event1.buffer[event1.count]) ;
이 부분에서 출력값은 event1.buffer[0] 가 아니라 event1.buffer[1]의 값입니다.
test() 함수에서 event1.count=event1.count+1 ; 을 해주었기 때문이죠..
그러니 화면의 출력값은 쓰레기 값이 나올수 밖에 없습니다.

printf(" buffer[0] = %d\n",event1.buffer[event1.count-1]) ;
이렇게 해 주던가 아니면
test() 함수에서 event1.count=event1.count+1 ; 이부분을 삭제하세요..



환타 님이 쓰신 글 :
: #include <stdio.h>
: #include <stdlib.h>
:
: struct packet{
:     int *buffer;
:     int buff_size;
:     int count;
:     int size;
: };
:
: struct packet event1;
:
: int test();
:
: void main(){
:     event1.size = 1;
:     event1.count=0;
:     event1.buffer = (int *)malloc(sizeof(int)*(event1.buff_size));
:     test();
:     printf(" buffer[0] = %d\n",event1.buffer[event1.count]);
:     printf(" event1.count %d\n",event1.count);
: }
:
: int test(){
:     event1.buffer[event1.count] = event1.size;   1)
:     event1.count=event1.count+1;                 2)
: }
:
: 에서 출력값이 1)과 2)라인에 따라서 달라지는데요..
:
: 1),2) 순서일때에는 buffer[0]=쓰레기값, event1.count=1로 나오구
:
: 2),1) 혹은 1) 혼자 쓰일때는  buffer[0]=1 로 출력이 됩니다.
:
: 음.. 한참을 앉아서 생각을 하다 보니 잘 생각이 안나네요.
:
: 밑에 질문 답변해주신 김시환님 정말 감사합니다.
:
: 수고스러우시겠지만 이것 한개 더 부탁 드리겠습니다.
:          

+ -

관련 글 리스트
4437 밑에 질문에 이은 질문입니다. 환타 1228 2004/05/18
4439     Re:밑에 질문에 이은 질문입니다. 김시환 1213 2004/05/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.