๋์ ํ ๋น
malloc ํจ์ ์ฌ์ฉ
void *malloc(size_t size)
ํฌ์ธํธ ํ์ ๋ฐํํ๊ณ ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ฆ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์
ex_) (int*)malloc(sizeof(int)*5) : intํ 5์นธ์ง๋ฆฌ ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น ํ ์ฃผ์ ๋ฐํ
๋ฐฐ์ด์ ์๋ฏธ
2์ฐจ์ ๋ฐฐ์ด
๋ฐฐ์ด์ด ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋์ง 2์ฐจ์ ๋ฐฐ์ด์ ์์ ๋ก ์ค๋ช ํ๋ฉด,
int ํ์ด๋ผ ๊ฐ์
์ฒ์์๋ ์ด๋ ๊ฒ ํ ๋งํผ์ ๊ธธ์ด๋ฅผ ๊ฐ๋ 1์ฐจ์ ๋ฐฐ์ด์ ์์ฑํ๋ค. ์ด 1์ฐจ์ ๋ฐฐ์ด์ ํฌ์ธํฐ๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ด๋ค.
๊ฐ ํฌ์ธํฐ๊ฐ ์ด ๋งํผ์ ๊ธธ์ด๋ฅผ ๊ฐ๋ 1์ฐจ์ ๋ฐฐ์ด์ ๊ฐ๋ฅดํจ๋ค.
๋ฐ๋ผ์ ๋์ ํ ๋น์ ํ ๋๋ ๋๊ฐ์ ๋ฐฉ์์ผ๋ก int*ํ 1์ฐจ์ ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋จผ์ ๋์ ํ ๋นํ ํ, ๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ฐ๊ฐ์ ํฌ์ธํฐ ์์์ ์ ๊ทผํด์ intํ 1์ฐจ์ ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ํ ๋น ํ๋ ๊ฒ์ด ์ข๋ค.
3์ฐจ์ ๋ฐฐ์ด
C์ธ์ด ์ฝ๋ ์์ ๋ 3์ฐจ์ ๋ฐฐ์ด์ผ๋ก ๋ค๊ฒ ๋ค.
3์ฐจ์ ๋ฐฐ์ด ์ญ์ 2์ฐจ์ ๋ฐฐ์ด๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์๊ฐํ๋ฉด ๋์ง๋ง ๊ณต๊ฐ์ ์ผ๋ก ์๊ฐํ๊ธฐ๋ ์ด๋ ค์์ง๋ฏ๋ก ๋จ์ํํด์ ๋ํ๋ด๋ณด์.
array๋ผ๋ ์ด๋ฆ์ 3์ฐจ์ float ๋ฐฐ์ด (array[2][4][3]) ์ ๋์ ํ ๋นํ๋ค๊ณ ๊ฐ์ ํ์.
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํํํ ์ ์๋ค. ๋จผ์ float**ํ 1์ฐจ์ ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋จผ์ ๋์ ํ ๋นํ ํ, ๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ฐ๊ฐ์ ์ด์คํฌ์ธํฐ ์์์ ์ ๊ทผํด์ float*ํ 1์ฐจ์ ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ํ ๋น ํ๋ค. ๊ทธ ํ ๋ฐ๋ณต๋ฌธ์ผ๋ก ํฌ์ธํฐ ์์์ ์ ๊ทผํด์ floatํ 1์ฐจ์ ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ํ ๋น ํ๋ค.
C์ธ์ด ์ฝ๋๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
weight = (float***)malloc(sizeof(float**)*2);
for (int i = 0; i < sizeof(weight); i++) {
weight[i] = (float**)malloc(sizeof(float*)*4);
}
for (int i = 0; i < sizeof(weight); i++) {
for (int j = 0; j < sizeof(weight[i]); j++) {
weight[i][j] = (float*)malloc(sizeof(float)*3);
}
}
'์ปดํจํฐ๊ณผํ (CS) > C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C] ์์คํ์ผ ๋ถํ ๋ก ๋ชจ๋ํ ๊ตฌํํ๊ธฐ (์ํ ์ ๋ฆฌ) (0) | 2020.02.02 |
---|
Comment