ํ์คํ ์น๐ ๊ฐ๋ฐ์ ์ง๋ง์ ๐ง๐ฝโ๐ป
โ ์ธ๊ณต์ง๋ฅ ๊ด์ฌ ๐ค
Categories
-
โฃ
โถ COMPUTER_SCIENCE
๐: 7 -
โฃ
โถ WEB
๐: 3 -
โฃ
โถ ETC
๐: 3-
โ
โฃ
ETCS
๐: 10 -
โ
โฃ
SUBBRAIN ๊ฐ๋ฐ๊ธฐ
๐: 5 -
โ
โ
YOS ๊ฐ๋ฐ๊ธฐ
๐: 1
-
โ
โฃ
-
โ
โถ AI
๐: 9-
โฃ
AITOOLS
๐: 3 -
โฃ
CV
๐: 2 -
โฃ
DEEP_LEARNING
๐: 1 -
โฃ
DATA_VIS
๐: 2 -
โฃ
GRAPH
๐: 1 -
โฃ
LIGHTWEIGHT
๐: 1 -
โฃ
MATH
๐: 1 -
โฃ
NLP
๐: 3 -
โ
STRUCTURED_DATA
๐: 2
-
โฃ
CS ์ง๋ฌธ ์ ๋ฆฌ - PL
CS ์ง๋ฌธ ์ ๋ฆฌ
๊ฐ์ฒด ์งํฅํ ํ๋ก๊ทธ๋๋ฐ
์ ์ธํ ํ๋ก๊ทธ๋๋ฐ
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
Java
Java ์์๊ณผ ์ธํฐํ์ด์ค
Javascript
๋น๋๊ธฐ
์ด๋ฒคํธ ๋ฃจํ
ํ๋ก๋ฏธ์ค
C-family
๋ฉ๋ชจ๋ฆฌ์ ๋์ ํ ๋น
C ์ธ์ด์ ๊ฒฝ์ฐ, ๋ฐํ์ ์ค์ ์ฌ์ฉํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์
ํ
์ ํ ๋นํ๊ธฐ ์ํด malloc
ํจ์๋ฅผ ์ด์ฉํ ์ ์๋ค.
๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์๋์ผ๋ก ๋์ ํ ๋น์ด ๊ฐ๋ฅํ์ง๋ง C์ธ์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ์์ ํ ์ ์ด๋ฅผ ๊ฐ์ง๋ ๋์ ๊ด๋ฆฌ ์ฑ ์ ๋ํ ์ง์ด์ผ ํ๋ค.
malloc
ํจ์
void* malloc(size_t size);
size
: ๋์ ์ผ๋ก ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ
return
: ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์, ํ ๋น ์คํจ์ NULL
- ๋ฆฌํด์ด void ํ์ด๋ฏ๋ก ์ฃผ์๋ฅผ ์ป์ด์ค๊ธฐ ์ํด
int*
์ฒ๋ผ ์บ์คํ ํ์ฌ ๊ฐ์ ๋ฐ์์์ผ ํ๋ค.
์ดํ ์ฌ์ฉ์ด ๋๋ ๋ฉ๋ชจ๋ฆฌ๋ free
ํจ์๋ฅผ ์ด์ฉํด ํด์ ํด ์ค์ผ ํ๋ค.
free
ํจ์
void free(void *ptr);
ptr
: ํด์ ํ๊ณ ์ ํ๋ ๋ฉ๋ชจ๋ฆฌ์ ํฌ์ธํฐ
- ํด์ ํด์ฃผ์ง ์์ ๊ฒฝ์ฐ ํด๋น ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ณ์ ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ ๋์ ํ์์ด ์ผ์ด๋๋ค.
- ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๊ฐ๋น์ง์ฝ๋ ์ ์ ํตํด ์๋์ผ๋ก ํด์ ํด์ค๋ค.
#include <stdio.h>
#include <stdlib.h> // or <malloc.h>
void main()
{
int* arr;
arr = (int*)malloc(sizeof(int) * 3); // 3 ๊ธธ์ด์ int ๋ฐฐ์ด ํฌ๊ธฐ ๋งํผ ๋์ ํ ๋น
arr[0] = 1;
arr[1] = 2;
arr[3] = 3;
for (int i = 0; i < 3; i++){
printf("%d", arr[i]);
}
free(arr); // ์ฌ์ฉํ ๋ฉ๋ชจ๋ฆฌ ํด์
}
char * myString = malloc(sizeof(char)*STRING_BUFFER_SIZE);
free(myString);
free(myString); // all realloc
์ด๋ฅผ double free bug(DFB)๋ผ๊ณ ํ๋ฉฐ, ๋ณดํต crash๋ ๋ฉ๋ชจ๋ฆฌ ์ค์ผ์ ์ํ์ด ์๋ค.
์ด๋ฅผ ๋ง๊ธฐ์ํด ๋ค์๊ณผ ๊ฐ์ด ํด์ ํ ๋ค NULL
์ ์ง์ ํด์ฃผ๋ฉด ์ข๋ค.
free(myString);
myString = NULL;
๊ฐ๋จํ ๋งํ์๋ฉด, ๋ ๋ฒ ํด์ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฎ์ด์์ด์ง ์ํ์ด ์๊ธด๋ค.
๋ธ๋ก๊ทธ ๊ธ
์ฐธ์กฐ
ใ ฃ
Python
_articles/computer_science/etc/CS ์ง๋ฌธ ์ ๋ฆฌ ์๋ฆฌ์ฆ/CS ์ง๋ฌธ ์ ๋ฆฌ - PL.md