ÀϹÝÀûÀÎ °æ¿ì¿¡´Â C#¿¡¼´Â C³ª C++¿¡¼ »ç¿ëÇÏ´ø Æ÷ÀÎÅÍ(*)¸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. ±×·¸´Ù°í C#¿¡¼ Æ÷ÀÎÅ͸¦ »ç¿ëÇÒ ¼ö ¾ø´Â °ÍÀº ¾Æ´Õ´Ï´Ù. C# ³»¿¡¼ Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ´Â °ÍÀº ¾à°£ÀÇ ¹®Á¦Á¡À» ¾È°í ÀÖ°í CLRÀÌ ¾ÈÀü¼ºÀ» º¸ÀåÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ºÒ¾ÈÀü »óÅ¿¡¼ ½ÇÇàµË´Ï´Ù. ÀÌ·¯ÇÑ Äڵ带 ºÒ¿ÏÀüÄÚµå(unsafe code)¶ó°í ºÎ¸¨´Ï´Ù.
C#¿¡¼ Æ÷ÀÎÅ͸¦ »ç¿ëÇÑ´Ù°í ¹«ÀÛÁ¤ Æ÷ÀÎÅ͸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ´ÙÀ½°ú °°Àº °æ¿ì´Â ¾Æ¹«·± Á¶Ä¡¾øÀÌ Æ÷ÀÎÅ͸¦ »ç¿ëÇ߱⠶§¹®¿¡ ¿¡·¯¸¦ À¯¹ßÇϰí ÀÖ½À´Ï´Ù.
|
& |
UnsafeTest.cs |
Ü Æ÷ÀÎÅ͸¦ »ç¿ëÀ¸·Î ¿¡·¯ ¹ß»ý(UnSafe) |
|
using System; class UnsafeTest{ static void CallByPoint(int* x) { *x = 10000; } public static void Main() { int x1 = 10; CallByPoint(&x1); Console.WriteLine("Call-By-Point: {0}", x1); } } | ||
|
C:\C#Example\02>csc UnsafeTest.cs UnsafeTest.cs(3,26): error CS0214: Æ÷ÀÎÅÍ´Â ¾ÈÀüÇÏÁö ¾ÊÀº ÄÁÅØ½ºÆ® ¾È¿¡¼¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. UnsafeTest.cs(4,4): error CS0214: Æ÷ÀÎÅÍ´Â ¾ÈÀüÇÏÁö ¾ÊÀº ÄÁÅØ½ºÆ® ¾È¿¡¼¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. UnsafeTest.cs(8,15): error CS0214: Æ÷ÀÎÅÍ´Â ¾ÈÀüÇÏÁö ¾ÊÀº ÄÁÅØ½ºÆ® ¾È¿¡¼¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. | ||
ÀÌ·¯ÇÑ °æ¿ì¸¦ ´ëºñÇØ¼ C#¿¡¼´Â unsafe Ű¿öµå¸¦ Á¦°øÇÕ´Ï´Ù. À§ÀÇ ¿¹Á¦¸¦ ´ÙÀ½°ú °°ÀÌ ¹Ù²Û´Ù¸é ¿ì¾ÆÇÏ°Ô µ¿ÀÛÇÕ´Ï´Ù.
|
& |
UnsafeTest.cs |
Ü unsafe Ű¿öµå¸¦ »ç¿ëÇÑ Æ÷ÀÎÅÍÀÇ »ç¿ë |
|
using System; class UnsafeTest{ unsafe static void CallByPoint(int* x) { *x = 10000; } public static void Main() { int x1 = 10; unsafe{ CallByPoint(&x1); } Console.WriteLine("Call-By-Point: {0}", x1); } } | ||
|
C:\C#Example\02>csc UnsafeTest.cs UnsafeTest.cs(3,21): error CS0227: ¾ÈÀüÇÏÁö ¾ÊÀº ÄÚµå´Â /unsafe¸¦ »ç¿ëÇÏ¿© ÄÄÆÄÀÏÇÏ´Â °æ¿ì¿¡¸¸ ³ªÅ¸³¯ ¼ö ÀÖ½À´Ï´Ù. C:\C#Example\02>csc /unsafe UnsafeTest.cs C:\C#Example\02>UnsafeTest Call-By-Point: 10000 | ||
À§ÀÇ ¿¹Á¦¿Í °°ÀÌ C#¿¡¼ Æ÷ÀÎÅÍ(*)¸¦ »ç¿ëÇϱâ À§Çؼ´Â unsafe Ű¿öµå¸¦ ÀÌ¿ëÇÏ¿© ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ·¯ÇÑ Æ÷ÀÎÅÍÀÇ »ç¿ëÀ» unsafe Ű¿öµå¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯´Â ¸»±×´ë·Î Äڵ尡 ºÒ¾ÈÀüÇϱ⠶§¹®ÀÔ´Ï´Ù. Áï, CLRÀÇ °¡ºñÁöÄÝ·ºÅͰ¡ ¸Þ¸ð¸®¸¦ Á¤¸®ÇÏ¸é¼ ¸Þ¸ð¸®¸¦ À̵¿½Ãų ¼öµµ Àֱ⠶§¹®¿¡ ¸Þ¸ð¸®ÀÇ ÁÖ¼Ò¸¦ ÇÚµéÇÏ´Â °ÍÀº ¾ÈÀüÇÏÁö ¾Ê´Ù´Â °ÍÀÔ´Ï´Ù. À̰ÍÀ» ÇØ°áÇϱâ À§Çؼ °¡ºñÁöÄÝ·ºÅͰ¡ ¸Þ¸ð¸®¸¦ À̵¿½ÃŰÁö ¸øÇϵµ·Ï fixed Ű¿öµå¸¦ Á¦°øÇϰí ÀÖ½À´Ï´Ù. ´ÙÀ½ Àý¿¡¼´Â fixed Ű¿öµå¿¡ ´ëÇØ¼ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
| jabookÀúÀÚ¸íÇÔ |
|
Á¦¸ñ:¼Ò¼³°°ÀºC# Á¦2°ÀÇ ÀúÀÚ:ÃÖ¿µ°ü |