Speicher des systemeigenen Arrays für das verwaltete Array in C ++ CLI

8

Mache ich das richtig?

Ich bekomme einen Zeiger auf ein natives Array und muss in ein verwaltetes Array kopieren. Verwenden Sie memcpy () mit einem pin_ptr.

%Vor%

arrayCount ist die tatsächliche Länge von pArray, also nicht wirklich besorgt über diesen Aspekt. Blick auf den Code und das Array wird von einem Vektor kopiert. So kann ich die Größe des verwalteten Arrays sicher festlegen.

    
Soppus 04.08.2011, 15:33
quelle

2 Antworten

3

Du machst es fast richtig:

%Vor%

Marshal :: Copy ist nicht sicher und nicht so schnell. Verwenden Sie in verwalteten C ++ immer gepinnte Zeiger.

Bearbeiten: Wenn Sie möchten, können Sie die Länge überprüfen, um sicherzustellen, dass der memcpy die Grenzen nicht überschreitet, z. B .:

%Vor%     
Ed Bayiates 04.08.2011, 18:16
quelle
11

Das funktioniert, ist aber nicht sicher. Wenn Sie arrayCount falsch erhalten, blähen Sie den Müllsammelhaufen in kleine Stücke. Sehr schwer zu diagnostizieren.

Marshal :: Copy () ist sicher und genauso schnell.

    
Hans Passant 04.08.2011 15:40
quelle

Tags und Links