[C/C++] malloc()๊ณผ new์˜ ์ฐจ์ด
ยท
๐Ÿ“ Language/โœ C & C++
malloc()๊ณผ new์˜ ์ฐจ์ด 1. ํ•จ์ˆ˜์™€ ์—ฐ์‚ฐ์ž C์—์„œ๋Š” ๋™์  ํ• ๋‹น์„ ์œ„ํ•ด malloc()๊ณผ free() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. C++์—์„œ๋Š” ๋™์  ํ• ๋‹น์„ ์œ„ํ•ด new์™€ delete ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋‹จ์ˆœํ•˜๊ฒŒ malloc()์€ ํ•จ์ˆ˜์ด๊ณ  new๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  malloc()์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํ•จ์ˆ˜์ด์ง€๋งŒ new๋Š” ๋ณ„๋„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 2. ์ดˆ๊ธฐํ™” malloc()์€ ๋™์  ํ• ๋‹นํ•˜๋Š” ๊ฒƒ๋งŒ์ด ๋ชฉ์ ์ด๋ฏ€๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•  ์ˆ˜ ์—†๋‹ค. new๋Š” ํ• ๋‹น๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค 3. ์ƒ์„ฑ์ž new๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ž๋™์œผ๋กœ ํ˜ธ์ถœํ•˜๊ฒŒ ๋œ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ delete๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์†Œ๋ฉธ์ž๊ฐ€ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค.
[C++] OOP ์†Œ๋ฉธ์ž์˜ virtual ํ‚ค์›Œ๋“œ
ยท
๐Ÿ“ Language/โœ C & C++
๊ฐ์ฒด์ง€ํ–ฅ์˜ ํŠน์„ฑ ์ค‘ ๋‹คํ˜•์„ฑ์˜ ๊ฐœ๋…์„ ์ ์šฉํ•œ ๊ฒƒ์ด๋‹ค. ๋‹คํ˜•์„ฑ์€ ๊ฐ๊ฐ์˜ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜์— ์“ฐ๊ธฐ๋„ ํ•˜์ง€๋งŒ ์†Œ๋ฉธ์ž์—๋„ ์‚ฌ์šฉ๋œ๋‹ค. ํด๋ž˜์Šค ๋‚ด ์†Œ๋ฉธ์ž์—๋Š” ์™œ virtual ํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์„๊นŒ? ๋จผ์ €, ์ƒ์†์—๋Š” 3๊ฐ€์ง€ ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค. is-a: ๋ฐ์ดํ„ฐ ํ˜•์€ ๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ ์„ ์–ธํ•˜๊ณ  ์ƒ์„ฑ์€ ์ž์‹ ํด๋ž˜์Šค๋กœ ํ• ๋‹นํ•œ๋‹ค. ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ, ์ž์‹ ํด๋ž˜์Šค์— Override ํ•œ ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ๊ทธ ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๋‹ค. has-a: ์†Œ์œ ๊ด€๊ณ„๋กœ์„œ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ทธ ๊ฐ์ฒด์˜ ๊ธฐ๋Šฅ(๋ณ€์ˆ˜, ํ•จ์ˆ˜)์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ƒ์„ฑ ์‹œ ์ƒ์†๋ฐ›์€ ๋ถ€๋ชจ ํด๋ž˜์Šค๋ถ€ํ„ฐ ํ˜ธ์ถœํ•˜๊ณ  ์†Œ๋ฉธ ์‹œ ์ž์‹ ํด๋ž˜์Šค๋ถ€ํ„ฐ ํ˜ธ์ถœ๋œ๋‹ค. is implemented of #include using namespace std; class Has..
์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ(Cache Memory)
ยท
๐Ÿ“ Computer Science/โœ OS
์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ๊ธฐ์–ต์žฅ์น˜์— ์ €์žฅ๋œ ๋‚ด์šฉ์˜ ์ผ๋ถ€๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•ด๋‘๋Š” ๊ธฐ์–ต์žฅ์น˜๋กœ ์†๋„๊ฐ€ ๋น ๋ฅธ ์žฅ์น˜์™€ ๋А๋ฆฐ ์žฅ์น˜ ๊ฐ„์˜ ์†๋„์ฐจ์— ๋”ฐ๋ฅธ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ฒ”์šฉ ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค. 1. ์ง€์—ญ์„ฑ(Locality) ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์ฃผ๊ธฐ์–ต์žฅ์น˜๋ฅผ ์ฐธ์กฐํ•  ๋•Œ ์ผ๋ถ€ ํŽ˜์ด์ง€๋งŒ ์ง‘์ค‘์ ์œผ๋กœ ์ฐธ์กฐํ•˜๋Š” ์„ฑ์งˆ๋กœ ์บ์‹œ์˜ ์ ์ค‘๋ฅ (Hit rate)์„ ๊ทน๋Œ€ํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ง€์—ญ์„ฑ์˜ ์›๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์‹œ๊ฐ„ ์ง€์—ญ์„ฑ: ์ตœ๊ทผ์— ์ฐธ์กฐ๋œ ์ฃผ์†Œ์˜ ๋‚ด์šฉ์€ ๊ณง ๋‹ค์Œ์— ๋‹ค์‹œ ์ฐธ์กฐ๋˜๋Š” ํŠน์„ฑ ๊ณต๊ฐ„ ์ง€์—ญ์„ฑ: ๋Œ€๋ถ€๋ถ„์˜ ์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ์ด ์ฐธ์กฐ๋œ ์ธ์ ‘ํ•œ ์ฃผ์†Œ์˜ ๋‚ด์šฉ์ด ๋‹ค์‹œ ์ฐธ์กฐ๋˜๋Š” ํŠน์„ฑ 2. ์บ์‹ฑ ๋ผ์ธ(Caching line) ์บ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ, ๋ฐ์ดํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๋“ฑ์„ ๊ธฐ๋กํ•ด ๋‘” ํƒœ๊ทธ๋ฅผ ๋‹ฌ์•„ ๊ธฐ๋กํ•œ๋‹ค. ์ด๋•Œ ์ด๋Ÿฌํ•œ ํƒœ๊ทธ๋“ค์˜ ๋ฌถ์Œ์„ ์บ์‹ฑ ๋ผ์ธ์ด๋ผ ํ•œ๋‹ค. ์บ์‹ฑ..
[C++] ๋น„ํŠธ๋งˆ์Šคํฌ(BitMask)
ยท
๐Ÿ“ Computer Science/โœ Algorithm
๋น„ํŠธ๋งˆ์Šคํฌ(BitMask)์ง‘ํ•ฉ ์š”์†Œ๋“ค์˜ ๊ตฌ์„ฑ ์—ฌ๋ถ€๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์œ ์šฉํ•œ ํ…Œํฌ๋‹‰์ด๋‹ค. ๊ธฐ๋ณธ ์›๋ฆฌ{1, 2, 3, 4, 5}๋ผ๋Š” ์ง‘ํ•ฉ์ด ์žˆ๊ณ  ์ด ์ง‘ํ•ฉ์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.{1}, {2}, ..., {1, 2}, ..., {1, 2, 5}, ..., {1, 2, 3, 4, 5} ๋ฌผ๋ก  ๊ฐ„๋‹จํžˆ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.ํ•˜์ง€๋งŒ ๋น„ํŠธ ๋งˆ์Šคํ‚น์„ ํ•˜๋ฉด ๊ฐ ์š”์†Œ๋ฅผ ์ธ๋ฑ์Šค์ฒ˜๋Ÿผ ํ‘œํ˜„ํ•˜์—ฌ ํšจ์œจ์ ์ธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.{1, 2, 3, 4, 5} → 11111{2, 3, 4, 5} → 11110{1, 2, 5} → 10011{2} → 00010 1) ์‚ฝ์ž…i๋ฒˆ ์งธ ๋น„ํŠธ ๊ฐ’์„ 1๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋•Œ OR ์—ฐ์‚ฐ์„ ํ™œ์šฉํ•œ๋‹ค.i = 3์ผ ๋•Œ, 10101 | (1 → 10101 | 01000 → 11101 2) ์‚ญ์ œi..
MVC ํŒจํ„ด
ยท
๐Ÿ“ Computer Science/โœ Design Pattern
MVC(Model-View-Controller) ํŒจํ„ด ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ๋งค์šฐ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด์œผ๋กœ ํฌ๊ฒŒ ๋ชจ๋ธ, ๋ทฐ, ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๊ตฌ์กฐํ™”ํ•œ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋กœ์ง์„ ๋‚˜๋ˆ„์–ด์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด ์—ฐ์‚ฐ์„ ํ•˜๋Š” ์—…๋ฌด์™€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ํ™”๋ฉด์„ ๋งŒ๋“œ๋Š” ์—…๋ฌด๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ฝ”๋“œ์˜ ์–‘์ด ๋งŽ์•„์ ธ๋„ ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ํŽธํ•˜๊ณ  ํ™•์žฅ์ด ์šฉ์ดํ•˜๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ทฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋Œ€ํ™”ํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•˜๋‹ค. ๋Œ€ํ™”ํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ž€ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์‹œ์Šคํ…œ์ด ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฐ˜์‘ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งํ•œ๋‹ค. 1. ๊ตฌ์„ฑ ์š”์†Œ 1) ๋ชจ๋ธ(Model) ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. DB์— ์—ฐ๊ฒฐํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜ ์ €์žฅ, ์‚ญ์ œ, ๊ฐฑ์‹  ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋‚ด๋ถ€ ๋น„์ฆˆ๋‹ˆ..
[C++] ์ •์ (Static) ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜
ยท
๐Ÿ“ Language/โœ C & C++
์ •์  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ static ์ž๋ฃŒํ˜• ๋ณ€์ˆ˜ ์ด๋ฆ„; ํ˜•์‹์œผ๋กœ ํด๋ž˜์Šค ๋ฐ–์—์„œ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ์ •์  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์ฆ‰ ํด๋ž˜์Šค ๋‚ด์˜ ์ „์—ญ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ํ–‰๋™ํ•œ๋‹ค. ์–ด๋–ค ๊ฐ์ฒด์—์„œ ๋ฐ”๊พผ ์ •์  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ๊ฐ’์€ ์œ ์ง€๋˜๋ฉฐ ๊ฐ™์€ ํด๋ž˜์Šค์˜ ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ๋”ฑ ํ•œ๋ฒˆ๋งŒ ํ•˜๊ฒŒ ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํšจ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. ์ •์  ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด ์—†์ด ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ๊ฐ์ฒด์—์„œ๋Š” ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค. private์œผ๋กœ ์„ ์–ธํ•œ ์ •์  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. #include using namespace std; class A { private: //์ •์  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”๋Š” ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ํ•œ๋‹ค. static int count; public:..