루프의 calloc 구조체에 값을 계산하고 할당하는 데 사용되는 임베디드 시스템에 대해 다소 큰 코드를 작성했습니다. 코드에서 버그가 발생하여 격리하고 수정하는 데 시간이 걸렸습니다. 필요한 경우 내 경험을 공유하기 전에 다른 사람이 버그를 지적 할 수 있는지보고 싶습니다.루프 내에서 메모리 초기화 : 세그먼트 오류가 있음
선언 블록 :
int *arr;
int i, num;
printf("Enter number of elements: ");
scanf("%d", &num); //Assume num>=0
arr = calloc(num, sizeof(int));
if (arr == NULL)
return;
i = num;
호출에 예외 무료() 이유를 던질 것이다 다음 코드 블록/블록?
for (i; i > 0; i--) {
arr[num - i] = i;
}
free(arr);
또는
while (i--) {
arr[num - i] = i;
}
free(arr);
그리고 두 번째 것은 비슷한 방법으로 충돌합니다 : 루프 상단에서'i == 1 '을하면'while' 조건이 성공하고'i'가 0으로 변경됩니다. 루프 본문은'arr [num-0]'에 다시 쓰려고 시도 할 것입니다. –
루프가 멋지게 보입니다. 충돌이있는 완전한 예제를 게시 할 수 있습니까? (ideone, codepad, 뭐든지 좋아, 또는 단지 여기에) –
@j_random_hacker : 그건 내가 처음에 생각한 것이지만, 루프는 괜찮아. – acjay