¼Ò¼³°°ÀºC#  Á¦2°­ÀÇ Å¬·¡½ºÀÇ ±âº»¹è°æ  23. fixed Ű¿öµå¸¦ ÀÌ¿ëÇÑ ¸Þ¸ð¸®°íÁ¤  

 

 

2.23 fixed Ű¿öµå¸¦ ÀÌ¿ëÇÑ ¸Þ¸ð¸® °íÁ¤

 

 

 

Äڵ尡 ºÒ¿ÏÀüÇÏ´Ù´Â °ÍÀ» ¾Ë¸®±â À§Çؼ­ 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°­ÀÇ
ÀúÀÚ:ÃÖ¿µ°ü