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 로 출력이 됩니다.
:
: 음.. 한참을 앉아서 생각을 하다 보니 잘 생각이 안나네요.
:
: 밑에 질문 답변해주신 김시환님 정말 감사합니다.
:
: 수고스러우시겠지만 이것 한개 더 부탁 드리겠습니다.
:
|