๐ก ์ผ๋จ ์ด์ ํฌ์คํ ์ธ ํฌ์ธํฐ์์ ๋ฒ์ด๋์ ๊ธฐ๋ถ์ด ๋งค์ฐ ์ข๋ค. ์ด ์ข์ ๊ธฐ๋ถ์ผ๋ก ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ํด์ ์์๋ณด๊ธฐ๋ก ํ์.
๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด๋?
C์ธ์ด์์ ๋ฐฐ์ด์ ๊ฒฝ์ฐ ์ฌ์ ์ ์ ์ ํ ํฌ๊ธฐ๋งํผ ํ ๋นํด์ฃผ์ด์ผ ํ๋ค.
์ํ๋ ๋งํผ๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํด์ ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด ํ๋ก๊ทธ๋จ ์คํ ๋์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ธ ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ฌ์ฉํ๋ค.
๋์ ์ผ๋ก ํ ๋น๋ ๋ณ์๋ ํ ์์ญ์ ์ ์ฅ๋๋ค.
๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ํจ์
- malloc() ํจ์๋ฅผ ์ด์ฉํด ์ํ๋ ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณดํ ์ ์๋ค.
- malloc() ํจ์๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ฑ๊ณตํ๋ฉด ์ฃผ์๋ฅผ ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด NULL์ ๋ฐํํ๋ค.
- malloc() ํจ์๋ <stdlib.h> ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์๋์ด ์๋ค.
- free() ํจ์๋ก ๋ฉ๋ชจ๋ฆฌ ํด์ ๋ฅผ ํด์ฃผ์ด์ผ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ํ๋ก์ธ์ค ๋ฌด๊ฒ๊ฐ ๋ํด์ ธ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
๋์ ์ผ๋ก ๋ฌธ์์ด ์ฒ๋ฆฌํ๊ธฐ
- ์ผ๊ด์ ์ธ ๋ฒ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ชจ๋ ํน์ ํ ๊ฐ์ผ๋ก ์ค์ ํ๊ธฐ ์ํด์๋ memset() ์ ์ฌ์ฉํ๋ค.
- memset(ํฌ์ธํฐ, ๊ฐ, ํ๊ธฐ);
- ํ ๋ฐ์ดํธ์ฉ ๊ฐ์ ์ ์ฅํ๋ฏ๋ก ๋ฌธ์์ด ๋ฐฐ์ด์ ์ฒ๋ฆฌ ๋ฐฉ์๊ณผ ํก์ฌํ๋ค.
- memset() ํจ์๋ <string.h> ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์๋์ด์๋ค.
์์
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char *a = malloc(100);
memset(a, 'A', 100);
for(int i = 0 ; i < 100 ; i++) {
printf("%c ", a[i]); // A 100๋ฒ ์ถ๋ ฅ
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int** p = (int**)malloc(sizeof(int*) * 3); // int** p๋ก ์ด์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ฃผ๊ณ 3ํ์ ๋ง๋ค์ด์ค๋ค.
for(int i = 0 ; i < 3 ; i++) {
*(p+1) = (int*)malloc(sizeof(int) * 3); // 3์ด์ ๋ง๋ค์ด ์ค๋ค.
}
for(int i = 0 ; i < 3 ; i++) {
for(int j = 0 ; j < 3 ; j++) {
*(*p+i)+j) = i*3+j;
printf("%d ", *(*p+i)+j);
}
printf("\\n");
}
}
/*
0 1 2
3 4 5
6 7 8
*/
๋ง์น๋ฉฐ..
๋ฐฐ์ด์ ์ฌ์ด์ฆ๋ฅผ ๋ฏธ๋ฆฌ ์ ํ์ง ์์๋ ๋๋ค๋ ์ ์์ ์ข์ ๊ฒ ๊ฐ๋ค. (JavaScript๋ ์๋ ์์ง๋ง..)
์์ง๋ ํฌ์ธํฐ๋ ์ด์ฐจ์ ๋ฐฐ์ด ํจ๊ป ์ฐ๋ ๊ฒ์ ์ด๋ ต์ง๋ง ์ด๋ ค์ฐ๋ฉด ๋ค์ ๋ณด๊ณ ๋ ๋ค์ ๋ณด๊ณ ์ดํดํ๋ ์๋ฐ์ ์์ง ์์๊น ํ๋ ์๊ฐ์ด ๋ ๋ค.
์ฐธ๊ณ ํ ์๋ฃ๋ค
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
MAC ํฐ๋ฏธ๋์์ MySQL ์ฌ์ฉํ๊ธฐ (0) | 2023.01.04 |
---|---|
Serverless์์ SQS ์ ํ ํ๊ณ ์ฌ์ฉํ๊ธฐ (0) | 2023.01.04 |
ํฌ์ธํฐ ๋ณ์๋? (2) | 2023.01.04 |
๋ณ์์ ์ข ๋ฅ (0) | 2023.01.04 |
์ปดํจํฐ๊ฐ ์๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ (0) | 2023.01.04 |