Äڵ尡 ºÒ¿ÏÀüÇÏ´Ù´Â °ÍÀ» ¾Ë¸®±â À§Çؼ unsafe Ű¿öµå¸¦ »ç¿ëÇÏ¿´½À´Ï´Ù. ±×¸®°í Æ÷ÀÎÅÍ ÀÚü°¡ ¿Ö ºÒ¿ÏÀüÇѰ¡¿¡ ´ëÇØ¼µµ ¾Ë¾Æ º¸¾Ò½À´Ï´Ù. Áï, ¸Þ¸ð¸®ÀÇ °íÁ¤À» º¸ÀåÇÒ ¼ö ¾ø´Ù´Â °ÍÀÌ ¹®Á¦¿´½À´Ï´Ù. ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇØ ÁÖ´Â °ÍÀÌ ¹Ù·Î fixedŰ¿öµåÀÔ´Ï´Ù. fixed Ű¿öµå´Â »ç¿ëÀÚ°¡ Æ÷ÀÎÅ͸¦ »ç¿ëÇϰí ÀÖ´õ¶ó°í ¸Þ¸ð¸®ÀÇ °íÁ¤À» º¸ÀåÇØ ÁÖ´Â ¿ªÇÒÀ» Çϰí ÀÖ½À´Ï´Ù. °¡ºñÁö Ä÷ºÅÍ(Grarbage Collector)¿¡ ÀÇÇØ¼ ÇØ´ç ¸Þ¸ð¸®ÀÇ Æ÷ÀÎÅ͸¦ À̵¿½ÃŰÁö ¸øÇϵµ·Ï ÇÏ´Â ±â´ÉÀ» Á¦°øÇϰí ÀÖ½À´Ï´Ù.
|
& |
FixedTest.cs |
Ü fixed Ű¿öµå¸¦ »ç¿ëÇÑ Æ÷ÀÎÅÍÀÇ °íÁ¤ |
|
using System; class FixedTest{ unsafe static void ArrayCopy(byte[] source, byte[] target) { fixed(byte* s = source, t= target){ for(int i =0; i<source.Length; i++) *(t +i)= *(s+i); } } public static void Main() { byte[] sample = {5, 6, 4, 6, 3, 4, 100}; byte[] copyed = new byte[7]; ArrayCopy(sample, copyed); foreach(byte temp in copyed) Console.Write( temp+"\t"); }//main }//class | ||
|
C:\C#Example\02>csc /unsafe FixedTest.cs C:\C#Example\02>FixedTest 5 6 4 6 3 4 100 | ||
fixed Ű¿öµå´Â ºÒ¿ÏÀü ÄÚµå ¿µ¿ª¿¡¼¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Áï, unsafe ³»¿¡¼ »ç¿ëÇÑ´Ù´Â ¸»À̰ÚÁÒ. À§ÀÇ ¼Ò½ºÄڵ忡¼ source¿Í target ¹ÙÀÌÆ® ¹è¿À» Æ÷ÀÎÅÍ·Î ¹Þ°í ÀÌ Æ÷ÀÎÅ͸¦ fixed ³»¿¡¼ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï s, t·Î ¾ò°Ô µË´Ï´Ù. ÀÌ ¶§ Æ÷ÀÎÅÍ·Î ¾ò¾î³»°í ÀÖÀ¸¸ç Æ÷ÀÎÅÍ Áï, ÁÖ¼Ò·Î ¹Ù·Î ÀÛ¾÷À» ÇÏ´Ï °¡ºñÁö ÄÝ·ºÅÍ´Â ¸Þ¸ð¸®¸¦ À̵¿ÇÏÁö ¸»¶ó´Â Ç¥½Ã°¡ µË´Ï´Ù. ±×¸®°í Æ÷ÀÎÅ͸¦ ÀÌ¿ëÇÏ¿© ÀÛ¾÷À» Çϰí ÀÖ½À´Ï´Ù.
| jabookÀúÀÚ¸íÇÔ |
|
Á¦¸ñ:¼Ò¼³°°ÀºC# Á¦2°ÀÇ ÀúÀÚ:ÃÖ¿µ°ü |