Click to Rate and Give Feedback
MSDN
MSDN Library
System Services
Memory Management
 CopyMemory Function
CopyMemory Function

Copies a block of memory from one location to another.

Syntax

void CopyMemory(
  __in  PVOID Destination,
  __in  const VOID *Source,
  __in  SIZE_T Length
);

Parameters

Destination [in]

A pointer to the starting address of the copied block's destination.

Source [in]

A pointer to the starting address of the block of memory to copy.

Length [in]

The size of the block of memory to copy, in bytes.

Return Value

This function has no return value.

Remarks

This function is defined as the RtlCopyMemory function. Its implementation is provided inline. For more information, see Winbase.h and Winnt.h.

If the source and destination blocks overlap, the results are undefined. For overlapped blocks, use the MoveMemory function.

Security Remarks

The first parameter, Destination, must be large enough to hold Length bytes of Source; otherwise, a buffer overrun may occur. This may lead to a denial of service attack against the application if an access violation occurs or, in the worst case, allow an attacker to inject executable code into your process. This is especially true if Destination is a stack-based buffer. Be aware that the last parameter, Length, is the number of bytes to copy into Destination, not the size of the Destination.

Examples

The following code example shows a safer way to use CopyMemory. Alternatively, you could use the memcpy_s or wmemcpy_s function.

#include <windows.h>

/*
   MyCopyMemory - A wrapper for CopyMemory

   buf     - destination buffer
   pbData  - source buffer
   cbData  - size of block to copy, in bytes
   bufsize - size of the destination buffer
*/
void MyCopyMemory(TCHAR *buf, TCHAR *pbData, SIZE_T cbData, SIZE_T bufsize) 
{
   CopyMemory(buf, pbData, min(cbData,bufsize));
}

Requirements

ClientRequires Windows Vista, Windows XP, or Windows 2000 Professional.
ServerRequires Windows Server 2008, Windows Server 2003, or Windows 2000 Server.
HeaderDeclared in Winbase.h; include Windows.h.

See Also

FillMemory
Memory Management Functions
MoveMemory
SecureZeroMemory
ZeroMemory


Send comments about this topic to Microsoft

Build date: 10/9/2008

Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker