#include <stdio.h>
#include <stdlib.h>
int *seperateDigits(int n)
{
int *digits, numberOfDigits = 0, temp = n;
while (temp) {
temp /= 10;
numberOfDigits++;
}
digits = (int *)malloc(sizeof(int) * (numberOfDigits + 1));
digits[numberOfDigits] = -1;
while (numberOfDigits >= 0) {
digits[--numberOfDigits] = n % 10;
n /= 10;
}
return digits;
}
int main(void) {
int n, *na;
scanf("%d", &n);
na = seperateDigits(n);
if (!na) {
printf("Cannot allocate memory!\n");
return 1;
}
while (*na != -1)
printf("%d ", *na++);
free(na);
return 0;
}
숫자를 숫자로 분리하는 함수를 작성했습니다. 메모리를 할당 해제하지 않으면 아무 것도 잘 작동하지 않습니다. 하지만 동적으로 할당 된 메모리를 free() 함수로 할당 해제하려고하면 런타임 오류가 발생합니다. 내가 도대체 뭘 잘못하고있는 겁니까?free() 함수로 인해 런타임 오류가 발생했습니다.
내 바보 같은 실수! – yunusaydin
왜 던지기가 해로운가요? – yunusaydin
@yunusaydin 링크를 참조하십시오. (그리고 다음 번에 적어도 디버거를 사용하거나 프로그램에 대한 이유를 찾으십시오.) –