C# 에서 C 언어 처럼 pointer 개념을 사용할 수 있다. pointer 개념은 네트워크 패킷 보낼때 많이 사용한다.

 

 Marshal.StructureToPtr(this, (IntPtr)fixed_buffer, false);

 

unsafe 라고 compiler 에 지시자로 알려주어야 한다. 

 

        public void GetBuffer(byte[] outBuffer)
        {
            if (0 == outBuffer.Length)
                outBuffer = new byte[PACKET_MAX_LEN];

            unsafe
            {
                fixed(byte* fixed_buffer = outBuffer)
                {
                    Marshal.StructureToPtr(this, (IntPtr)fixed_buffer, false);
                }
            }
            
        }

하지만 unsafe 한 항목이어서 컴파일이 안되서 아래처럼  Allow unsafe code 옵션을 설정해 주면 컴파일이 된다. 

 

 

 

 

 

+ Recent posts