ํ’€์Šคํƒ ์›น๐ŸŒ ๊ฐœ๋ฐœ์ž ์ง€๋ง์ƒ ๐Ÿง‘๐Ÿฝโ€๐Ÿ’ป
โž• ์ธ๊ณต์ง€๋Šฅ ๊ด€์‹ฌ ๐Ÿค–


Categories


Recent views

  • 1
  • 2
  • 3
  • 4
  • 5

CS ์งˆ๋ฌธ ์ •๋ฆฌ - PL

  1. ๊ฐ์ฒด ์ง€ํ–ฅํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    • ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    • Java
    • Javascript
      • C-family
      • Python

        CS ์งˆ๋ฌธ ์ •๋ฆฌ

        ๊ฐ์ฒด ์ง€ํ–ฅํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

        JAVA ๊ธฐ๋ณธ-ํด๋ž˜์Šค ๊ตฌ์กฐ

        ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

        ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

        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); // ์‚ฌ์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ
        }
        
        โž• ๋งŒ์•ฝ ํ•ด์ œํ•œ(free) ๋ฉ”๋ชจ๋ฆฌ ๋˜ ํ•ด์ œํ•˜๋ฉด? => DFB
        char * myString = malloc(sizeof(char)*STRING_BUFFER_SIZE);
        free(myString); 
        free(myString); // all realloc
        

        ์ด๋ฅผ double free bug(DFB)๋ผ๊ณ  ํ•˜๋ฉฐ, ๋ณดํ†ต crash๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์˜ค์—ผ์˜ ์œ„ํ—˜์ด ์žˆ๋‹ค.

        ์ด๋ฅผ ๋ง‰๊ธฐ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์ œํ•œ ๋’ค NULL์„ ์ง€์ •ํ•ด์ฃผ๋ฉด ์ข‹๋‹ค.

        free(myString);
        myString = NULL;
        
        โž• ์™œ DFB๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฐ€?

        ๊ฐ„๋‹จํžˆ ๋งํ•˜์ž๋ฉด, ๋‘ ๋ฒˆ ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ ๋ฎ์–ด์”Œ์–ด์งˆ ์œ„ํ—˜์ด ์ƒ๊ธด๋‹ค.
        ๋ธ”๋กœ๊ทธ ๊ธ€ ์ฐธ์กฐ

        โž• ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ž€?

        ใ…ฃ

        Python