#include <stdio.h>
#include <stdlib.h>
int main()
{
int* arr;
int* arr2;
int arr_size;
scanf("%d", &arr_size);
arr = (int*)malloc(sizeof(int) * arr_size);
for (int i = 0 ;i < arr_size; i++)
{
arr[i] = i;
printf("%d ", arr[i]);
}
printf("\n");
//사이즈 증가
arr_size += 3;
//2번 코드 넣기
for (int i = 0; i < arr_size; i++)
{
arr[i] = i;
printf("%d ", arr[i]);
}
free(arr);
}
값의 입력은 들어가는데 free할때 오류가 뜬다.
값은 왜 들어가는거지? (추측)자기 메모리 공간을 넘어서 다른 메모리 침범해서 덮어 쓰는중이다
free할때 오류가 난다.
arr2 = (int*)malloc(sizeof(int) * arr_size);
for (int i = 0; i < arr_size + 3; i++)
{
arr[i] = arr2[i];
}
1번과 별다를게 없다 free할때 오류가난다.
arr2 = (int*)malloc(sizeof(int) * arr_size);
arr = arr2;
printf("%p\n", arr);
printf("%p\n", arr2);
arr2의 주소를 받아서 출력한다.
arr의 arr_size 10이지만 arr2의 길이는 13인데 주소대입이 된다.