Skip to content

๐Ÿ’ง ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ (Memory Leak) โ€‹

๋น„์œ : ์š•์กฐ์— ๋ฌผ์„ ๋ฐ›๋Š”๋ฐ ๋งˆ๊ฐœ๋ฅผ ์•ˆ ๋ฝ‘๋Š” ๊ฒƒ โ€‹

์ •์ƒ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ:          ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜:

malloc() โ†’ ํ• ๋‹น ๐Ÿชฃ             malloc() โ†’ ํ• ๋‹น ๐Ÿชฃ
์‚ฌ์šฉ...                        ์‚ฌ์šฉ...
free()   โ†’ ํ•ด์ œ ๐Ÿšฟ             free() ์—†์Œ! โŒ

[๋ฌผ ๋ฐ›๊ณ  โ†’ ๋นผ๊ณ  โ†’ ๋ฐ˜๋ณต]        [๋ฌผ ๋ฐ›๊ณ  โ†’ ๋ฐ›๊ณ  โ†’ ๋ฐ›๊ณ  โ†’ ๋„˜์นจ!]

์ฝ”๋“œ๋กœ ๋ณด๋Š” ์ฐจ์ด โ€‹

c
// ์ •์ƒ: ํ• ๋‹น ํ›„ ํ•ด์ œ
void ์ •์ƒํ•จ์ˆ˜() {
    char* data = malloc(25MB);  // ํ• ๋‹น
    // ... ์‚ฌ์šฉ ...
    free(data);                 // โ† ๋ฐ˜๋“œ์‹œ ํ•ด์ œ!
}

// โŒ ๋ˆ„์ˆ˜: ํ•ด์ œ ์—†์Œ
void ๋ˆ„์ˆ˜ํ•จ์ˆ˜() {
    char* data = malloc(25MB);  // ํ• ๋‹น
    // ... ์‚ฌ์šฉ ...
    // free(data); โ† ์ด๊ฒŒ ์—†์Œ!
}   // ํ•จ์ˆ˜ ๋๋‚˜๋„ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ทธ๋Œ€๋กœ ์ ์œ  ์ค‘

์ด ๋ฌธ์„œ์—์„œ์˜ ํŒจํ„ด โ€‹

T+2์ดˆ:  malloc(25MB)  free ์—†์Œ โ†’ 25MB ์ ์œ 
T+5์ดˆ:  malloc(25MB)  free ์—†์Œ โ†’ 50MB ์ ์œ 
T+8์ดˆ:  malloc(25MB)  free ์—†์Œ โ†’ 75MB ์ ์œ 
T+11์ดˆ: malloc(25MB)  free ์—†์Œ โ†’ 100MB ์ ์œ  โ†’ ์ข…๋ฃŒ

์ถœ์ฒ˜: Codyssey-B1/B4-2