Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original
Este tópico ainda não foi avaliado como - Avalie este tópico

Método Marshal.Copy (IntPtr, Byte[], Int32, Int32)

Dados das cópias de um ponteiro de memória não gerenciado para uma matriz gerenciado inteiro de 8 bits sem sinal.

Namespace:  System.Runtime.InteropServices
Assembly:  mscorlib (em mscorlib.dll)
public static void Copy(
	IntPtr source,
	byte[] destination,
	int startIndex,
	int length
)

Parâmetros

source
Tipo: System.IntPtr
O ponteiro de memória de copiar.
destination
Tipo: System.Byte[]
A matriz para copiar a.
startIndex
Tipo: System.Int32
O índice com base zero na matriz de destino onde copiar deve iniciar.
length
Tipo: System.Int32
O número de elementos da matriz para copiar.
ExceçãoCondição
ArgumentNullException

source, destination, startIndex, ou length são null.

Não gerenciado, matrizes ctype de estilo não contêm informações de limites, que impede os parâmetros de startIndex e de length são validados. Assim, os dados não gerenciados correspondentes ao parâmetro de source preenchem a matriz gerenciado independentemente de sua utilidade. Você deve inicializar a matriz gerenciado com o tamanho apropriado antes de chamar este método.

O exemplo a seguir copia uma matriz à memória não gerenciado e então copiar a matriz não gerenciado de volta na memória gerenciada.


using System;
using System.Runtime.InteropServices;

class Example
{

    static void Main()
    {
        // Create a managed array.
        byte[] managedArray = { 1, 2, 3, 4 };

        // Initialize unmanged memory to hold the array.
        int size = Marshal.SizeOf(managedArray[0]) * managedArray.Length;

        IntPtr pnt = Marshal.AllocHGlobal(size);

        try
        {
            // Copy the array to unmanaged memory.
            Marshal.Copy(managedArray, 0, pnt, managedArray.Length);

            // Copy the unmanaged array back to another managed array.

            byte[] managedArray2 = new byte[managedArray.Length];

            Marshal.Copy(pnt, managedArray2, 0, managedArray.Length);

            Console.WriteLine("The array was coppied to unmanaged memory and back.");

        }
        finally
        {
            // Free the unmanaged memory.
            Marshal.FreeHGlobal(pnt);
        }



    }

}


.NET Framework

Com suporte em: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Biblioteca de Classes Portátil

Com suporte em: Biblioteca de Classes Portátil

.NET para aplicativos da Windows Store

Com suporte em: Windows 8
  • SecurityCriticalAttribute 

    requer confiança total para o chamador imediato. Este membro não pode ser usado pelo código parcialmente confiável ou transparente.

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte .Requisitos de sistema do NET Framework.
Isso foi útil para você?
(1500 caracteres restantes)

Contribuições da comunidade

ADICIONAR
© 2013 Microsoft. Todos os direitos reservados.