Linked List ์ฝ๋์ Spectre ๊ด๋ จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ํจ์น ์ธํธ๋ฅผ ๋ ผ์ํ๋ ์ค, ์ต์ ๋ฒ์ ์ ํ์ค์ ์ค์ํ๋ C ์ฝ๋๋ฅผ ์ปค๋์ ํ์ฉํ๋ฉด ๋ฌธ์ ๋ฅผ ๋ณด๋ค ์ํํ๊ฒ ํด๊ฒฐํ ์ ์๋ค๋ ๊ฒ์ด ๋ถ๋ช ํด์ก์ต๋๋ค. ํ์ฌ ์ถ๊ฐ๋ ์ปค๋ ์ฝ๋๋ 89๋ ์ ํ์ฑ๋ ANSI C(C1989) ์ฌ์์ ์ค์ํด์ผ ํฉ๋๋ค.
์ฝ๋์ Spectre ๊ด๋ จ ๋ฌธ์ ๋ ๋ฃจํ ์ดํ ๋ณ๋๋ก ์ ์๋ ๋ฐ๋ณต์๋ฅผ ๊ณ์ ์ฌ์ฉํ์ฌ ๋ฐ์ํ์ต๋๋ค. ๋งคํฌ๋ก๋ ์ฐ๊ฒฐ๋ ๋ชฉ๋ก์ ์์๋ฅผ ๋ฐ๋ณตํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ ๋ฃจํ ๋ฐ๋ณต์๊ฐ ํด๋น ๋งคํฌ๋ก์ ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ๋ฃจํ ์์ฒด ์ธ๋ถ์์ ์ ์๋๋ฉฐ ๋ฃจํ ํ์๋ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. C99 ํ์ค์ ์ฌ์ฉํ๋ฉด for() ๋ธ๋ก์ ๋ฃจํ ๋ณ์๋ฅผ ์ ์ํ ์ ์์ผ๋ฏ๋ก ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์ง ์๊ณ ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
Linus Torvalds๋ ์๋ก์ด ์ฌ์์ ๋ํ ์ง์์ ๊ตฌํํ๋ค๋ ์์ด๋์ด์ ๋์ํ๊ณ 5.18๋
์ ๋ฐํ๋ C11 ํ์ค์ ์ฌ์ฉํ๋๋ก 2011 ์ปค๋์ ์ด๋ํ ๊ฒ์ ์ ์ํ์ต๋๋ค. ์๋น ํ
์คํธ ๋์ ์ ๋ชจ๋์ GCC ๋ฐ Clang ์ด์
๋ธ๋ฆฌ๋ ํธ์ฐจ ์์ด ํต๊ณผ๋์์ต๋๋ค. ๋ณด๋ค ์ฒ ์ ํ ํ
์คํธ ์ค์ ์์์น ๋ชปํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ผ๋ฉด 5.18 ์ปค๋ ๋น๋ ์คํฌ๋ฆฝํธ์ '--std=gnu89' ์ต์
์ด '--std=gnu11 -Wno-shift-negative-value'๋ก ๋์ฒด๋ฉ๋๋ค. C17 ํ์ค์ ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ๋ ๊ณ ๋ ค๋์์ง๋ง ์ด ๊ฒฝ์ฐ GCC์ ์ต์ ์ง์ ๋ฒ์ ์ ๋๋ ค์ผ ํฉ๋๋ค. C11 ์ง์ ํฌํจ์ GCC ๋ฒ์ (5.1)์ ํ์ฌ ์๊ตฌ ์ฌํญ์ ์ ํฉํฉ๋๋ค.
์ถ์ฒ : opennet.ru