๐Ÿš€ ๋Ÿฌ์ŠคํŠธ vs C: ์‹œ์Šคํ…œ ์ˆ˜์ค€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋Œ€๊ฒฐ! ๐Ÿ›ก๏ธ

์ฝ˜ํ…์ธ  ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ - ๐Ÿš€ ๋Ÿฌ์ŠคํŠธ vs C: ์‹œ์Šคํ…œ ์ˆ˜์ค€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋Œ€๊ฒฐ! ๐Ÿ›ก๏ธ

 

 

์•ˆ๋…•ํ•˜์„ธ์š”, ์—ฌ๋Ÿฌ๋ถ„! ์˜ค๋Š˜์€ ์ •๋ง ํฅ๋ฏธ์ง„์ง„ํ•œ ์ฃผ์ œ๋กœ ์ฐพ์•„์™”์–ด์š”. ๋ฐ”๋กœ ๋Ÿฌ์ŠคํŠธ(Rust)์™€ C ์–ธ์–ด์˜ ๋Œ€๊ฒฐ! ๐ŸฅŠ ์‹œ์Šคํ…œ ์ˆ˜์ค€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ด ๋‘ ์–ธ์–ด๊ฐ€ ์–ด๋–ป๊ฒŒ ์•ˆ์ „์„ฑ๊ณผ ์†๋„๋ฅผ ๊ฒจ๋ฃจ๋Š”์ง€ ์•Œ์•„๋ณผ ๊ฑฐ์˜ˆ์š”. ์ค€๋น„๋˜์…จ๋‚˜์š”? ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์š”? ใ…‹ใ…‹ใ…‹

๐ŸŽญ ์ž ๊น! ์žฌ๋Šฅ๋„ท ํ™๋ณด ํƒ€์ž„!
์—ฌ๋Ÿฌ๋ถ„, ํ˜น์‹œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹ค๋ ฅ์„ ๋ฝ๋‚ด๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? ์•„๋‹ˆ๋ฉด ์ƒˆ๋กœ์šด ์–ธ์–ด๋ฅผ ๋ฐฐ์šฐ๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? ๊ทธ๋ ‡๋‹ค๋ฉด ์žฌ๋Šฅ๋„ท์„ ํ•œ ๋ฒˆ ๋ฐฉ๋ฌธํ•ด๋ณด์„ธ์š”! ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์žฌ๋Šฅ์„ ์‚ฌ๊ณ ํŒ” ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด๋ž๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ๋‚˜ C ์ „๋ฌธ๊ฐ€๋ฅผ ์ฐพ์„ ์ˆ˜๋„ ์žˆ๊ณ , ์—ฌ๋Ÿฌ๋ถ„์˜ ์‹ค๋ ฅ์„ ๋ฝ๋‚ผ ์ˆ˜๋„ ์žˆ์–ด์š”. ์ž, ์ด์ œ ๋ณธ๋ก ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ณผ๊นŒ์š”?

๐ŸŒŸ ๋Ÿฌ์ŠคํŠธ์™€ C: ์ฒซ ๋งŒ๋‚จ

์ž, ์—ฌ๋Ÿฌ๋ถ„! ์šฐ๋ฆฌ์˜ ์ฃผ์ธ๊ณต ๋‘ ๋ถ„์„ ์†Œ๊ฐœํ• ๊ฒŒ์š”. ํ•œ ์ชฝ ์ฝ”๋„ˆ์—๋Š” ์˜ค๋ž˜๋œ ๊ฐ•์ž C ์–ธ์–ด! ๐Ÿ‘ด ๋‹ค๋ฅธ ์ชฝ ์ฝ”๋„ˆ์—๋Š” ์‹ ํฅ ๊ฐ•์ž ๋Ÿฌ์ŠคํŠธ! ๐Ÿฆ€ ์ด ๋‘ ์–ธ์–ด๊ฐ€ ์–ด๋–ป๊ฒŒ ํƒ„์ƒํ–ˆ๋Š”์ง€, ์–ด๋–ค ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณผ๊นŒ์š”?

๐Ÿ•ฐ๏ธ C ์–ธ์–ด: ์ปดํ“จํ„ฐ์˜ ํ• ์•„๋ฒ„์ง€

C ์–ธ์–ด๋Š” ์ •๋ง ์—ญ์‚ฌ๊ฐ€ ๊นŠ์–ด์š”. 1972๋…„์— ํƒœ์–ด๋‚ฌ์œผ๋‹ˆ๊นŒ ์ด์ œ 50์‚ด์ด ๋„˜์—ˆ๋„ค์š”! ใ…‹ใ…‹ใ…‹ ๋ฒจ ์—ฐ๊ตฌ์†Œ์˜ ๋ฐ๋‹ˆ์Šค ๋ฆฌ์น˜์™€ ์ผ„ ํ†ฐ์Šจ์ด ๋งŒ๋“ค์—ˆ๋‹ต๋‹ˆ๋‹ค. ๋‹น์‹œ์—๋Š” UNIX ์šด์˜ ์ฒด์ œ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์–ด์š”.

  • ๐Ÿ‘ ์žฅ์ : ๋น ๋ฅธ ์‹คํ–‰ ์†๋„, ํ•˜๋“œ์›จ์–ด ์ง์ ‘ ์ œ์–ด ๊ฐ€๋Šฅ
  • ๐Ÿ‘Ž ๋‹จ์ : ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›€, ์•ˆ์ „์„ฑ ์ด์Šˆ

C ์–ธ์–ด๋Š” ์ •๋ง ๋น ๋ฅด๊ณ  ๊ฐ•๋ ฅํ•ด์š”. ํ•˜์ง€๋งŒ ๊ทธ๋งŒํผ ์œ„ํ—˜ํ•  ์ˆ˜๋„ ์žˆ์ฃ . ๋งˆ์น˜ F1 ๋ ˆ์ด์‹ฑ์นด๋ฅผ ์šด์ „ํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•ด์š”. ๋น ๋ฅด์ง€๋งŒ ์กฐ์‹ฌํ•ด์„œ ๋‹ค๋ค„์•ผ ํ•ด์š”!

๐Ÿฆ€ ๋Ÿฌ์ŠคํŠธ: ์ƒˆ๋กœ์šด ์˜์›…์˜ ๋“ฑ์žฅ

๋Ÿฌ์ŠคํŠธ๋Š” 2010๋…„์— ๋ชจ์งˆ๋ผ์—์„œ ์‹œ์ž‘๋œ ํ”„๋กœ์ ํŠธ์˜ˆ์š”. C++์˜ ๋ณต์žก์„ฑ์„ ์ค„์ด๋ฉด์„œ๋„ ์•ˆ์ „์„ฑ์„ ๋†’์ด๋ ค๊ณ  ๋งŒ๋“ค์–ด์กŒ์ฃ . ์ด์ œ 10๋Œ€ ํ›„๋ฐ˜์ด๋‹ˆ๊นŒ ์•„์ง ์ฒญ์†Œ๋…„์ด๋„ค์š”! ใ…‹ใ…‹ใ…‹

  • ๐Ÿ‘ ์žฅ์ : ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ฑ, ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์›
  • ๐Ÿ‘Ž ๋‹จ์ : ํ•™์Šต ๊ณก์„ ์ด ๊ฐ€ํŒŒ๋ฆ„, ์ปดํŒŒ์ผ ์‹œ๊ฐ„์ด ๊ธธ๋‹ค

๋Ÿฌ์ŠคํŠธ๋Š” ๋งˆ์น˜ ์•ˆ์ „์žฅ์น˜๊ฐ€ ์ž”๋œฉ ๋‹ฌ๋ฆฐ ์Šคํฌ์ธ ์นด ๊ฐ™์•„์š”. ๋น ๋ฅด๋ฉด์„œ๋„ ์•ˆ์ „ํ•˜์ง€๋งŒ, ์šด์ „ํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฌ์ฃ !

๐Ÿค” ์žฌ๋Šฅ๋„ท ํŒ!
C๋‚˜ ๋Ÿฌ์ŠคํŠธ๋ฅผ ๋ฐฐ์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด ์žฌ๋Šฅ๋„ท์—์„œ ์ „๋ฌธ๊ฐ€๋ฅผ ์ฐพ์•„๋ณด์„ธ์š”. ์˜จ๋ผ์ธ ๊ฐ•์˜๋ถ€ํ„ฐ 1:1 ์ฝ”์นญ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ์˜ต์…˜์ด ์žˆ๋‹ต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹ค๋ ฅ์„ ํ•œ ๋‹จ๊ณ„ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”!

๐Ÿ‹๏ธโ€โ™€๏ธ ์•ˆ์ „์„ฑ: ๋Ÿฌ์ŠคํŠธ vs C

์ž, ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋‘ ์–ธ์–ด์˜ ์•ˆ์ „์„ฑ์„ ๋น„๊ตํ•ด๋ณผ๊นŒ์š”? ์ด๊ฑด ๋งˆ์น˜ ๊ฒฉํˆฌ๊ธฐ ๋Œ€๊ฒฐ ๊ฐ™์•„์š”. ํ•œ์ชฝ์€ ๊ฒฝํ—˜ ๋งŽ์€ ๋ฒ ํ…Œ๋ž‘, ๋‹ค๋ฅธ ์ชฝ์€ ์‹ ๊ธฐ์ˆ ๋กœ ๋ฌด์žฅํ•œ ์‹ ์˜ˆ. ๊ณผ์—ฐ ๋ˆ„๊ฐ€ ์ด๊ธธ๊นŒ์š”?

๐Ÿ›ก๏ธ ๋Ÿฌ์ŠคํŠธ์˜ ์•ˆ์ „์„ฑ ์ฒ ๋ฒฝ ๋ฐฉ์–ด

๋Ÿฌ์ŠคํŠธ๋Š” ์•ˆ์ „์„ฑ์— ์žˆ์–ด์„œ๋Š” ์ •๋ง ๋ํŒ์™•์ด์—์š”. ๋งˆ์น˜ ์ฒ ๋ฒฝ ๋ฐฉ์–ด๋ฅผ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ผผ๊ผผํ•˜๊ฒŒ ๋ชจ๋“  ๊ฒƒ์„ ์ฒดํฌํ•œ๋‹ต๋‹ˆ๋‹ค.

  • ์†Œ์œ ๊ถŒ ์‹œ์Šคํ…œ: ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์˜ ํ˜๋ช…!
  • ๋นŒ๋ฆผ ์ฒด์ปค: ๋ฐ์ดํ„ฐ ๋ ˆ์ด์Šค? ๊ทธ๊ฒŒ ๋ญ์˜ˆ์š”? ๋ชป ๋“ค์–ด๋ดค์–ด์š”~
  • ๋ผ์ดํ”„ํƒ€์ž„: ๋ณ€์ˆ˜์˜ ์ˆ˜๋ช…์„ ์ฒ ์ €ํžˆ ๊ด€๋ฆฌํ•ด์š”.

๋Ÿฌ์ŠคํŠธ์˜ ์ด๋Ÿฐ ํŠน์ง•๋“ค ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ํƒ€์ž„์— ๋Œ€๋ถ€๋ถ„์˜ ๋ฒ„๊ทธ๋ฅผ ์žก์•„๋‚ผ ์ˆ˜ ์žˆ์–ด์š”. ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๋‹ˆ๊นŒ ์ •๋ง ํŽธํ•˜์ฃ !

๐Ÿ” ์†Œ์œ ๊ถŒ ์‹œ์Šคํ…œ ์ž์„ธํžˆ ๋“ค์—ฌ๋‹ค๋ณด๊ธฐ

๋Ÿฌ์ŠคํŠธ์˜ ์†Œ์œ ๊ถŒ ์‹œ์Šคํ…œ์€ ์ •๋ง ๋…ํŠนํ•ด์š”. ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋Š” ๋ณผ ์ˆ˜ ์—†๋Š” ๊ฐœ๋…์ด์ฃ . ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋กœ ์‚ดํŽด๋ณผ๊นŒ์š”?


fn main() {
    let s1 = String::from("์•ˆ๋…•");
    let s2 = s1;  // s1์˜ ์†Œ์œ ๊ถŒ์ด s2๋กœ ์ด๋™
    
    // println!("{}", s1);  // ์ด ์ค„์€ ์ปดํŒŒ์ผ ์—๋Ÿฌ!
    println!("{}", s2);  // ์ด๊ฑด OK!
}

์œ„ ์ฝ”๋“œ์—์„œ s1์˜ ๊ฐ’์„ s2์— ํ• ๋‹นํ•˜๋ฉด, s1์€ ๋” ์ด์ƒ ์œ ํšจํ•˜์ง€ ์•Š์•„์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋‚˜ ์ด์ค‘ ํ•ด์ œ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์›์ฒœ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์ฃ . ๋˜‘๋˜‘ํ•˜์ฃ ? ใ…‹ใ…‹ใ…‹

๐Ÿ•ต๏ธโ€โ™€๏ธ ๋นŒ๋ฆผ ์ฒด์ปค: ๋ฐ์ดํ„ฐ ๋ ˆ์ด์Šค์˜ ์ฒœ์ 

๋นŒ๋ฆผ ์ฒด์ปค๋Š” ๋Ÿฌ์ŠคํŠธ์˜ ๋˜ ๋‹ค๋ฅธ ์Šˆํผ ํžˆ์–ด๋กœ์˜ˆ์š”. ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ ˆ์ด์Šค๋ฅผ ๋ฏธ๋ฆฌ ์žก์•„๋‚ด์ฃ . ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณผ๊นŒ์š”?


fn main() {
    let mut x = 5;
    let y = &mut x;  // ๊ฐ€๋ณ€ ์ฐธ์กฐ
    
    // let z = &x;  // ์ด ์ค„์€ ์ปดํŒŒ์ผ ์—๋Ÿฌ!
    
    *y += 1;
    println!("{}", x);  // 6
}

์œ„ ์ฝ”๋“œ์—์„œ y๊ฐ€ x์˜ ๊ฐ€๋ณ€ ์ฐธ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋•Œ, ๋‹ค๋ฅธ ์ฐธ์กฐ๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฐ”๋กœ "์ž ๊น! ๊ทธ๊ฑด ์•ˆ ๋ผ์š”!"๋ผ๊ณ  ๋งํ•ด์ค˜์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ์ฃ .

โณ ๋ผ์ดํ”„ํƒ€์ž„: ๋ณ€์ˆ˜์˜ ์šด๋ช…์„ ๊ด€๋ฆฌํ•ด์š”

๋ผ์ดํ”„ํƒ€์ž„์€ ๋ณ€์ˆ˜๊ฐ€ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ์‚ด์•„์žˆ์„์ง€ ๊ฒฐ์ •ํ•ด์š”. ๋งˆ์น˜ ๋ณ€์ˆ˜์˜ ์šด๋ช…์„ ๊ด€๋ฆฌํ•˜๋Š” ์‹ ์ด๋ž„๊นŒ์š”? ใ…‹ใ…‹ใ…‹


fn longest<'a>(x: &'a str, y: &'a str) -> &'a str {
    if x.len() > y.len() {
        x
    } else {
        y
    }
}

fn main() {
    let s1 = String::from("์งง์€ ๋ฌธ์ž์—ด");
    let s2 = String::from("์ด๊ฒƒ์€ ๋” ๊ธด ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค");
    let result = longest(s1.as_str(), s2.as_str());
    println!("๋” ๊ธด ๋ฌธ์ž์—ด: {}", result);
}

์œ„ ์ฝ”๋“œ์—์„œ 'a๋Š” ๋ผ์ดํ”„ํƒ€์ž„์„ ๋‚˜ํƒ€๋‚ด์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฐ˜ํ™˜๋˜๋Š” ์ฐธ์กฐ๊ฐ€ ํ•ญ์ƒ ์œ ํšจํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์ฃ . ๋ฉ‹์ง€์ง€ ์•Š๋‚˜์š”?

๐Ÿ•ณ๏ธ C์˜ ์•ˆ์ „์„ฑ: ์œ„ํ—˜ํ•œ ์ค„ํƒ€๊ธฐ

C ์–ธ์–ด๋Š”... ์Œ... ์•ˆ์ „์„ฑ์— ์žˆ์–ด์„œ๋Š” ์ข€ ์œ„ํ—˜ํ•œ ์ค„ํƒ€๊ธฐ๋ฅผ ํ•˜๊ณ  ์žˆ์–ด์š”. ใ…‹ใ…‹ใ…‹ ๋งˆ์น˜ ์„œ์ปค์Šค์—์„œ ์•ˆ์ „๋ง ์—†์ด ์ค„ํƒ€๊ธฐ๋ฅผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ฌ๊นŒ์š”?

  • ์ˆ˜๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ: ์‹ค์ˆ˜ํ•˜๋ฉด ํฐ์ผ๋‚˜์š”!
  • ํฌ์ธํ„ฐ ์˜ค์šฉ: ์ž˜๋ชป ์“ฐ๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ๋ป—์–ด๋ฒ„๋ ค์š”.
  • ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ: ํ•ด์ปค๋“ค์ด ์ข‹์•„ํ•˜๋Š” ์ทจ์•ฝ์ ์ด์ฃ .

C์—์„œ๋Š” ์ด๋Ÿฐ ๋ฌธ์ œ๋“ค์„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•ด์•ผ ํ•ด์š”. ์‹ค์ˆ˜ ํ•˜๋‚˜๊ฐ€ ํฐ ๋ณด์•ˆ ๋ฌธ์ œ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์ฃ . ๊ทธ๋ž˜์„œ C๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ๋•Œ๋Š” ์ •๋ง ์กฐ์‹ฌ์กฐ์‹ฌ ๋˜ ์กฐ์‹ฌํ•ด์•ผ ํ•ด์š”!

๐Ÿง  ์ˆ˜๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ: ์–‘๋‚ ์˜ ๊ฒ€

C์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง์ ‘ ํ• ๋‹นํ•˜๊ณ  ํ•ด์ œํ•ด์•ผ ํ•ด์š”. ์ด๊ฑด ๋งˆ์น˜ ์š”๋ฆฌํ•  ๋•Œ ๋ถˆ์„ ์ง์ ‘ ์กฐ์ ˆํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•ด์š”. ์ž˜ํ•˜๋ฉด ๋ง›์žˆ๋Š” ์š”๋ฆฌ๊ฐ€ ๋˜์ง€๋งŒ, ์‹ค์ˆ˜ํ•˜๋ฉด... ์Œ์‹์ด ํƒ€๋ฒ„๋ฆฌ๊ฒ ์ฃ ? ใ…‹ใ…‹ใ…‹


#include <stdio.h>
#include <stdlib.h>

int main() {
    int *arr = (int*)malloc(5 * sizeof(int));
    if (arr == NULL) {
        printf("๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์‹คํŒจ!\n");
        return 1;
    }

    for (int i = 0; i < 5; i++) {
        arr[i] = i * 10;
    }

    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }

    free(arr);  // ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋ฅผ ์žŠ์ง€ ๋งˆ์„ธ์š”!
    return 0;
}
</stdlib.h></stdio.h>

์œ„ ์ฝ”๋“œ์—์„œ malloc()์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ , ์‚ฌ์šฉ์ด ๋๋‚˜๋ฉด free()๋กœ ํ•ด์ œํ•ด์•ผ ํ•ด์š”. ๋งŒ์•ฝ free()๋ฅผ ์žŠ์–ด๋ฒ„๋ฆฌ๋ฉด? ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒ ์ฃ ! ๐Ÿ˜ฑ

๐Ÿ‘‰ ํฌ์ธํ„ฐ ์˜ค์šฉ: ์œ„ํ—˜ํ•œ ์žฅ๋‚œ๊ฐ

C์˜ ํฌ์ธํ„ฐ๋Š” ์ •๋ง ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์˜ˆ์š”. ํ•˜์ง€๋งŒ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๋ฉด ์ •๋ง ์œ„ํ—˜ํ•ด์งˆ ์ˆ˜ ์žˆ์ฃ . ๋งˆ์น˜ ์–ด๋ฆฐ์ด์—๊ฒŒ ์นผ์„ ์ฃผ๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•ด์š”. ใ…‹ใ…‹ใ…‹


#include <stdio.h>

int main() {
    int x = 10;
    int *p = &x;

    printf("x์˜ ๊ฐ’: %d\n", x);
    printf("p๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’: %d\n", *p);

    *p = 20;  // x์˜ ๊ฐ’์„ ๋ณ€๊ฒฝ
    printf("๋ณ€๊ฒฝ ํ›„ x์˜ ๊ฐ’: %d\n", x);

    // ์œ„ํ—˜ํ•œ ์ฝ”๋“œ!
    // int *q = (int*)100;
    // *q = 50;  // ๋ฏธ์ •์˜ ๋™์ž‘!

    return 0;
}
</stdio.h>

์œ„ ์ฝ”๋“œ์—์„œ ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ๋ถ€๋ถ„์„ ๋ณด์„ธ์š”. ์ €๋ ‡๊ฒŒ ์ž„์˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ํฌ๋ž˜์‹œ๋  ์ˆ˜ ์žˆ์–ด์š”. ๋Ÿฌ์ŠคํŠธ์˜€๋‹ค๋ฉด ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์ด๋Ÿฐ ์‹ค์ˆ˜๋ฅผ ์žก์•„์คฌ์„ ํ…๋ฐ ๋ง์ด์ฃ .

๐Ÿ’ฅ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ: ํ•ด์ปค์˜ ์ฒœ๊ตญ

๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ๋Š” C ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๊ฐ€์žฅ ์•…๋ช… ๋†’์€ ๋ณด์•ˆ ์ทจ์•ฝ์  ์ค‘ ํ•˜๋‚˜์˜ˆ์š”. ์ด๊ฑด ๋งˆ์น˜ ์ปต์— ๋ฌผ์„ ๋„ˆ๋ฌด ๋งŽ์ด ๋ถ€์–ด์„œ ๋„˜์น˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•ด์š”. ๊ทธ๋Ÿฐ๋ฐ ์ด '๋ฌผ'์ด ์•…์„ฑ ์ฝ”๋“œ๋ผ๋ฉด? ๐Ÿ˜จ


#include <stdio.h>
#include <string.h>

void vulnerable_function(char *input) {
    char buffer[10];
    strcpy(buffer, input);  // ์œ„ํ—˜ํ•œ ํ•จ์ˆ˜!
    printf("%s\n", buffer);
}

int main() {
    char *user_input = "์ด ๋ฌธ์ž์—ด์€ ๋ฒ„ํผ๋ณด๋‹ค ๊ธธ์–ด์š”!";
    vulnerable_function(user_input);
    return 0;
}
</string.h></stdio.h>

์œ„ ์ฝ”๋“œ์—์„œ strcpy() ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ ๊ธธ์ด๋ฅผ ์ฒดํฌํ•˜์ง€ ์•Š๊ณ  ๋ณต์‚ฌํ•ด์š”. ๋งŒ์•ฝ ์ž…๋ ฅ์ด ๋ฒ„ํผ๋ณด๋‹ค ๊ธธ๋‹ค๋ฉด? ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด ํ•ด์ปค๊ฐ€ ์‹œ์Šคํ…œ์„ ๊ณต๊ฒฉํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋Ÿฌ์ŠคํŠธ์˜€๋‹ค๋ฉด ์ด๋Ÿฐ ์‹ค์ˆ˜๋ฅผ ์ปดํŒŒ์ผ ํƒ€์ž„์— ์žก์•„์คฌ์„ ๊ฑฐ์˜ˆ์š”.

๐Ÿ’ก ์žฌ๋Šฅ๋„ท ๊ฟ€ํŒ!
C๋‚˜ ๋Ÿฌ์ŠคํŠธ๋กœ ์•ˆ์ „ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด, ์žฌ๋Šฅ๋„ท์—์„œ ๋ณด์•ˆ ์ „๋ฌธ๊ฐ€์˜ ๋„์›€์„ ๋ฐ›์•„๋ณด๋Š” ๊ฒƒ์€ ์–ด๋–จ๊นŒ์š”? ์‹ค์ œ ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜์ด ์žˆ๋Š” ์ „๋ฌธ๊ฐ€๋“ค์ด ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ๋ฆฌ๋ทฐํ•ด์ฃผ๊ณ , ๋” ์•ˆ์ „ํ•œ ์ฝ”๋”ฉ ์Šต๊ด€์„ ๊ธฐ๋ฅผ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค„ ๊ฑฐ์˜ˆ์š”!

๐ŸŽ๏ธ ์†๋„: ๋ˆ„๊ฐ€ ๋” ๋น ๋ฅผ๊นŒ?

์ž, ์ด์ œ ์†๋„ ๋Œ€๊ฒฐ์˜ ์‹œ๊ฐ„์ด์—์š”! ๐Ÿ C์™€ ๋Ÿฌ์ŠคํŠธ, ๊ณผ์—ฐ ๋ˆ„๊ฐ€ ๋” ๋น ๋ฅผ๊นŒ์š”? ์ด๊ฑด ๋งˆ์น˜ F1 ๋ ˆ์ด์‹ฑ ๋Œ€ํšŒ ๊ฐ™์•„์š”. ๋‘ ์„ ์ˆ˜๊ฐ€ ํŠธ๋ž™์„ ๋‹ฌ๋ฆฌ๋Š” ๋ชจ์Šต์„ ์ƒ์ƒํ•ด๋ณด์„ธ์š”. ๋ถ€์›…~~ ๐ŸŽ๏ธ๐Ÿ’จ

๐Ÿš€ C: ์†๋„์˜ ๋Œ€๋ช…์‚ฌ

C ์–ธ์–ด๋Š” ์˜ค๋žซ๋™์•ˆ '๋น ๋ฅธ ์–ธ์–ด'์˜ ๋Œ€๋ช…์‚ฌ๋กœ ๋ถˆ๋ ค์™”์–ด์š”. ์™œ ๊ทธ๋Ÿด๊นŒ์š”?

  • ๋กœ์šฐ ๋ ˆ๋ฒจ ์ ‘๊ทผ: ํ•˜๋“œ์›จ์–ด์™€ ๊ฐ€๊นŒ์›Œ์š”.
  • ์ตœ์†Œํ•œ์˜ ๋Ÿฐํƒ€์ž„: ์‹คํ–‰ ์‹œ ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์ด ๊ฑฐ์˜ ์—†์–ด์š”.
  • ์ˆ˜๋™ ์ตœ์ ํ™”: ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์„ฑ๋Šฅ์„ ํŠœ๋‹ํ•  ์ˆ˜ ์žˆ์–ด์š”.

C๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์€ ๋งˆ์น˜ ๊ฒฝ๋Ÿ‰ ๋ ˆ์ด์‹ฑ์นด์™€ ๊ฐ™์•„์š”. ๋ถˆํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ๋‹ค ์ œ๊ฑฐํ•˜๊ณ  ์˜ค์ง ์†๋„์—๋งŒ ์ง‘์ค‘ํ•œ ๊ฑฐ์ฃ !

๐Ÿ”ง ๋กœ์šฐ ๋ ˆ๋ฒจ ์ ‘๊ทผ: ํ•˜๋“œ์›จ์–ด์™€์˜ ๋ฐ€์ ‘ํ•œ ๋Œ€ํ™”

C ์–ธ์–ด๋Š” ํ•˜๋“œ์›จ์–ด์™€ ์•„์ฃผ ๊ฐ€๊น๊ฒŒ ๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋งˆ์น˜ ์ž๋™์ฐจ ์—”์ง„๊ณผ ์ง์ ‘ ๋Œ€ํ™”ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ์š”. ์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ด๋ƒ๊ณ ์š”? ์˜ˆ๋ฅผ ๋“ค์–ด๋ณผ๊ฒŒ์š”.


#include <stdio.h>

int main() {
    int x = 5;
    int y = 10;
    int *ptr = &x;

    printf("x์˜ ์ฃผ์†Œ: %p\n", (void*)&x);
    printf("y์˜ ์ฃผ์†Œ: %p\n", (void*)&y);
    printf("ptr์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ: %p\n", (void*)ptr);

    return 0;
}
</stdio.h>

์ด ์ฝ”๋“œ์—์„œ ์šฐ๋ฆฌ๋Š” ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ง์ ‘ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”. ์ด๋ ‡๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง์ ‘ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑด, ํ•„์š”ํ•˜๋‹ค๋ฉด ์•„์ฃผ ์„ธ๋ฐ€ํ•œ ์ตœ์ ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋œป์ด์—์š”. ๋ฉ‹์ง€์ง€ ์•Š๋‚˜์š”? ใ…‹ใ…‹ใ…‹

โšก ์ตœ์†Œํ•œ์˜ ๋Ÿฐํƒ€์ž„: ๊ฐ€๋ฒผ์›€์˜ ๊ทน์น˜

C ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ๋Š” ์ •๋ง ์ตœ์†Œํ•œ์˜ ์ถ”๊ฐ€ ์ž‘์—…๋งŒ ์ผ์–ด๋‚˜์š”. ์ด๊ฑด ๋งˆ์น˜ ๋ ˆ์ด์‹ฑ์นด์— ๋ถˆํ•„์š”ํ•œ ์žฅ์‹์„ ๋‹ค ๋–ผ์–ด๋‚ด๊ณ  ์˜ค์ง ๋‹ฌ๋ฆฌ๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๋‚จ๊ธด ๊ฒƒ๊ณผ ๊ฐ™์•„์š”.


#include <stdio.h>
#include <time.h>

int main() {
    clock_t start, end;
    double cpu_time_used;

    start = clock();

    // ์—ฌ๊ธฐ์— ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ ์ฝ”๋“œ๋ฅผ ๋„ฃ์œผ์„ธ์š”
    for (int i = 0; i < 1000000; i++) {
        // ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š์Œ
    }

    end = clock();
    cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;

    printf("์‹คํ–‰ ์‹œ๊ฐ„: %f ์ดˆ\n", cpu_time_used);

    return 0;
}
</time.h></stdio.h>

์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋ฉด, 100๋งŒ ๋ฒˆ์˜ ๋ฃจํ”„๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์–ด์š”. C๋Š” ์ด๋Ÿฐ ๋‹จ์ˆœํ•œ ์—ฐ์‚ฐ์—์„œ ์ •๋ง ๋น›์„ ๋ฐœํ•˜์ฃ !

๐Ÿ› ๏ธ ์ˆ˜๋™ ์ตœ์ ํ™”: ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์˜ˆ์ˆ 

C์—์„œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ์ง€๊ฐ€ ๋งŽ์•„์š”. ์ด๊ฑด ๋งˆ์น˜ ๋ ˆ์ด์‹ฑ์นด ์ •๋น„์‚ฌ๊ฐ€ ์ฐจ๋ฅผ ์ง์ ‘ ํŠœ๋‹ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ฃ . ์˜ˆ๋ฅผ ๋“ค์–ด๋ณผ๊นŒ์š”?


#include <stdio.h>
#include <time.h>

#define SIZE 10000

int main() {
    int arr[SIZE][SIZE];
    clock_t start, end;
    double cpu_time_used;

    start = clock();

    // ํ–‰ ์šฐ์„  ์ ‘๊ทผ (๋น ๋ฆ„)
    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            arr[i][j] = i + j;
        }
    }

    end = clock();
    cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
    printf("ํ–‰ ์šฐ์„  ์ ‘๊ทผ ์‹œ๊ฐ„: %f ์ดˆ\n", cpu_time_used);

    start = clock();

    // ์—ด ์šฐ์„  ์ ‘๊ทผ (๋Š๋ฆผ)
    for (int j = 0; j < SIZE; j++) {
        for (int i = 0; i < SIZE; i++) {
            arr[i][j] = i + j;
        }
    }

    end = clock();
    cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
    printf("์—ด ์šฐ์„  ์ ‘๊ทผ ์‹œ๊ฐ„: %f ์ดˆ\n", cpu_time_used);

    return 0;
}
</time.h></stdio.h>

์ด ์ฝ”๋“œ์—์„œ ์šฐ๋ฆฌ๋Š” 2์ฐจ์› ๋ฐฐ์—ด์— ์ ‘๊ทผํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋น„๊ตํ•ด์š”. ํ–‰ ์šฐ์„  ์ ‘๊ทผ์ด ์—ด ์šฐ์„  ์ ‘๊ทผ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๋‹ค๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์ฃ . ์ด๋Ÿฐ ์‹์œผ๋กœ C์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํŒจํ„ด์„ ์ตœ์ ํ™”ํ•ด์„œ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์–ด์š”. ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์†์„ ๋Œ€์„œ ์ตœ๊ณ ์˜ ์„ฑ๋Šฅ์„ ๋ฝ‘์•„๋‚ด๋Š” ๊ฑฐ์ฃ ! ๐Ÿ‘จโ€๐Ÿ”ง

๐Ÿฆ€ ๋Ÿฌ์ŠคํŠธ: ์•ˆ์ „ํ•˜๋ฉด์„œ๋„ ๋น ๋ฅด๋‹ค!

๋Ÿฌ์ŠคํŠธ๋Š” "์•ˆ์ „์„ฑ๊ณผ ์†๋„, ๋‘˜ ๋‹ค ์žก์•˜๋‹ค!"๊ณ  ์ž๋ž‘ํ•˜๊ณ  ์žˆ์–ด์š”. ๊ณผ์—ฐ ๊ทธ๋Ÿด๊นŒ์š”?

  • ์ œ๋กœ ๋น„์šฉ ์ถ”์ƒํ™”: ์•ˆ์ „์„ฑ์„ ์œ„ํ•œ ๊ธฐ๋Šฅ๋“ค์ด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์•„์š”.
  • LLVM ๋ฐฑ์—”๋“œ: ์ตœ์ ํ™”๋œ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ด์š”.
  • ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ: ๋ฉ€ํ‹ฐ์ฝ”์–ด CPU๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.

๋Ÿฌ์ŠคํŠธ๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์€ ๋งˆ์น˜ ์ตœ์‹  ๊ธฐ์ˆ ์ด ์ ์šฉ๋œ ์ „๊ธฐ ๋ ˆ์ด์‹ฑ์นด ๊ฐ™์•„์š”. ์•ˆ์ „ํ•˜๋ฉด์„œ๋„ ๋น ๋ฅด์ฃ !

๐Ÿ—๏ธ ์ œ๋กœ ๋น„์šฉ ์ถ”์ƒํ™”: ์•ˆ์ „์„ฑ์ด ๊ณต์งœ!

๋Ÿฌ์ŠคํŠธ์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” '์ œ๋กœ ๋น„์šฉ ์ถ”์ƒํ™”'์˜ˆ์š”. ์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ด๋ƒ๊ณ ์š”? ๋Ÿฌ์ŠคํŠธ์˜ ์•ˆ์ „์„ฑ ๊ธฐ๋Šฅ๋“ค์ด ์‹คํ–‰ ์†๋„์— ๊ฑฐ์˜ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ด์—์š”. ์˜ˆ๋ฅผ ๋“ค์–ด๋ณผ๊นŒ์š”?


fn main() {
    let numbers = vec![1, 2, 3, 4, 5];
    
    // ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ ํ•ฉ๊ณ„ ๊ณ„์‚ฐ
    let sum: i32 = numbers.iter().sum();
    println!("ํ•ฉ๊ณ„: {}", sum);

    // for ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•œ ํ•ฉ๊ณ„ ๊ณ„์‚ฐ
    let mut manual_sum = 0;
    for &num in &numbers {
        manual_sum += num;
    }
    println!("์ˆ˜๋™ ํ•ฉ๊ณ„: {}", manual_sum);
}

์ด ์ฝ”๋“œ์—์„œ iter().sum()์„ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•๊ณผ for ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•์€ ๊ฑฐ์˜ ๋™์ผํ•œ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ค˜์š”. ๋Ÿฌ์ŠคํŠธ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ์ตœ์ ํ™”ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ์•ˆ์ „ํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ๋„ ์„ฑ๋Šฅ์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์™„์ „ ๊ฐœ์ด๋“ ์•„๋‹ˆ์—์š”? ใ…‹ใ…‹ใ…‹

๐Ÿ”ง LLVM ๋ฐฑ์—”๋“œ: ์ตœ์ ํ™”์˜ ๋งˆ๋ฒ•

๋Ÿฌ์ŠคํŠธ๋Š” LLVM(Low Level Virtual Machine)์ด๋ผ๋Š” ๊ฐ•๋ ฅํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ์ธํ”„๋ผ๋ฅผ ์‚ฌ์šฉํ•ด์š”. ์ด๊ฑด ๋งˆ์น˜ ๋ ˆ์ด์‹ฑ์นด์˜ ์—”์ง„์„ ์ตœ๊ณ ์˜ ์—”์ง€๋‹ˆ์–ด๋“ค์ด ํŠœ๋‹ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„์š”. ์–ด๋–ค ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ๋ณผ๊นŒ์š”?


#[inline(always)]
fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn main() {
    let result = add(5, 10);
    println!("๊ฒฐ๊ณผ: {}", result);
}
์ด ์ฝ”๋“œ์—์„œ #[inline(always)] ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ์‚ฌ์šฉํ–ˆ์–ด์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด LLVM์ด add