오늘 배운 곳까지 기말고사 시험범위
내일하고 다음주 수요일 수업 없음
동적인 배열은 위 코드처럼 중간에 크기를 늘려도 된다
하지만 두 가지 문제점이 생기는데
첫 번째 문제는 원래 저장되어 있던 데이터를 잃어버리게 된다.
두 번째 문제는 메모리를 회수하지 않기 때문에 메모리 누수가 발생한다.
#include <stdio.h>
#include <stdlib.h>
#define SIZE 5
int main()
{
int *original, *copy;
int input, s, m, i = 0;
original = (int*)malloc(SIZE * sizeof(int));
scanf("%d", &input);
while (input != -1000) {
s = i / SIZE + 1;
if (i > 0 && i % SIZE == 0) {
copy = (int*)malloc((s - 1) * SIZE * sizeof(int));
for (m = 0; m < (s - 1) * SIZE; m++)
copy[m] = original[m];
free(original);
original = (int*)malloc(s * SIZE * sizeof(int));
for (m = 0; m < (s - 1) * SIZE; m++)
original[m] = copy[m];
free(copy);
original[i] = input;
printf("SIZE : %d, CURRENT : %d\n", s * SIZE, original[i]);
i++;
}
else {
original[i] = input;
printf("SIZE : %d, CURRENT : %d\n", s * SIZE, original[i]);
i++;
}
scanf("%d", &input);
}
free(original);
}
시험은 위 코드에서 낼 듯
다음 코드는 SIZE 5를 초과할 때마다 동적 배열 사이즈를 5씩 증가시켜
데이터 입력에 문제 없도록 하는 코드이다.
'학교 > 프로그래밍응용' 카테고리의 다른 글
(12)20241112 (0) | 2024.11.12 |
---|---|
(11)20241106 (0) | 2024.11.06 |
(10)20241105 (0) | 2024.11.05 |
(9)20241030 (0) | 2024.10.30 |
(8)20241029 (0) | 2024.10.29 |