[C] n์ฐจ์› ๋ฐฐ์—ด ๋™์ ํ• ๋‹นํ•˜๊ธฐ!

๋™์ ํ• ๋‹น

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);
        }
    }
๋ฐ˜์‘ํ˜•