: realloc ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ก ํ ๋นํ๋ค๋ ์๋ฏธ. ์ด๋ฏธ ํ ๋น๋ฐ์ ๊ธฐ์กด ๋ฉ๋ชจ๋ฆฌ ๋ฉ์ด๋ฆฌ๋ฅผ ์๋๋ณด๋ค ํฌ๊ฑฐ๋ ์๊ฒ ๋ฐ๊พธ๋ ์์ ์ ํจ. <stdlib.h> ํค๋ํ์ผ์ ํฌํจ๋์ด์์.
์๋ ์ฝ๋๋ ํฌ๊ธฐ๊ฐ intํ ์ธ๊ฐ์ธ ๋ฐฐ์ด์ realloc์ ์ด์ฉํด 4๊ฐ๋ก ๋๋ฆฐ๊ฒ.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int *list = malloc(3 * sizeof(int));
if (list == NULL)
{
return 1;
}
list[0] = 1;
list[1] = 2;
list[2] = 3;
// tmp ํฌ์ธํฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ list์ ๊ฐ ๋ณต์ฌ
int *tmp = realloc(list, 4 * sizeof(int));
if (tmp == NULL)
{
return 1;
}
// list์ ํฌ์ธํฐ๊ฐ tmp์ ๊ฐ์ ๊ณณ์ ๊ฐ๋ฆฌํค๋๋ก ํจ
list = tmp;
// ์๋ก์ด list์ ๋ค ๋ฒ์งธ ๊ฐ ์ ์ฅ
list[3] = 4;
// list ๊ฐ ์ถ๋ ฅ
for (int i = 0; i < 4; i++)
{
printf("%d\n", list[i]);
}
//list ์ ๋ฉ๋ชจ๋ฆฌ ์ด๊ธฐํ
free(list);
}
์ด๋ฏธ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ๋ ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ก ํ ๋นํด์ค์ผ ํ๋ ์ด์ ๋,
๊ธฐ์กด์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ ์ฃผ์ ๊ณต๊ฐ์ ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ์์ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค. (๋ค๋ฅธ ๋ฐ์ดํฐ์ ์์ญ์ ์นจ๋ฒํ ์๋ ์์ผ๋ ๊ธฐ์กด์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ๋ถ๋ก ๋์ด๊ฑฐ๋ ํ ์ ์๋จ ์๊ธฐ)
๋ฐ๋ผ์ ์๋ก์ด ๊ณต๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํด์ฃผ๊ณ ๊ธฐ์กด์ ๋ฐฐ์ด๊ฐ๋ค์ ๊ฐ์ ธ์ค๋ ๊ฒ ์์ ํ๋ค.
โป ์ด ๊ธ์ edwith์ [๋ถ์คํธ์ฝ์ค] ๋ชจ๋๋ฅผ ์ํ ์ปดํจํฐ ๊ณผํ์ ๋ฃ๊ณ ์์ฑ๋์์ต๋๋ค.
๋๊ธ ์์ญ