TIL

๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด๋ž€?

indeeah 2023. 1. 4. 13:25

๐Ÿ’ก ์ผ๋‹จ ์ด์ „ ํฌ์ŠคํŒ…์ธ ํฌ์ธํ„ฐ์—์„œ ๋ฒ—์–ด๋‚˜์„œ ๊ธฐ๋ถ„์ด ๋งค์šฐ ์ข‹๋‹ค. ์ด ์ข‹์€ ๊ธฐ๋ถ„์œผ๋กœ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ธฐ๋กœ ํ•˜์ž.

๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด๋ž€?

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๋Š” ์›๋ž˜ ์—†์ง€๋งŒ..)

์•„์ง๋„ ํฌ์ธํ„ฐ๋ž‘ ์ด์ฐจ์› ๋ฐฐ์—ด ํ•จ๊ป˜ ์“ฐ๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€๋งŒ ์–ด๋ ค์šฐ๋ฉด ๋‹ค์‹œ ๋ณด๊ณ  ๋˜ ๋‹ค์‹œ ๋ณด๊ณ  ์ดํ•ดํ•˜๋Š” ์ˆ˜๋ฐ–์— ์—†์ง€ ์•Š์„๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.

์ฐธ๊ณ ํ•œ ์ž๋ฃŒ๋“ค

https://fastcampus.co.kr/courses/201582/clips/