This function copies at most smax bytes from src to dest, up to dmax.
- Parameters
-
[out] | dest | pointer to the memory that will be replaced by src. |
[in] | dmax | maximum length of the resulting dest, in bytes |
[in] | src | pointer to the memory that will be copied to dest |
[in] | smax | maximum number bytes of src that can be copied |
- Precondition
- Neither dest nor src shall be a null pointer.
-
dmax shall not be 0.
-
dmax shall not be greater than RSIZE_MAX_MEM.
-
smax shall not be greater than dmax.
-
Copying shall not take place between regions that overlap.
- Note
- C11 uses RSIZE_MAX, not RSIZE_MAX_MEM.
- Returns
- If there is a runtime-constraint violation, the memcpy_s function stores zeros in the first dmax bytes of the region pointed to by dest if dest is not a null pointer and smax is valid.
- Return values
-
EOK | when operation is successful |
ESNULLP | when dest/src is NULL POINTER |
ESZEROL | when dmax = ZERO. Before C11 also with smax = ZERO |
ESLEMAX | when dmax/smax > RSIZE_MAX_MEM |
ESNOSPC | when dmax < smax |
ESOVRLP | when src memory overlaps dst |
- See also
- memcpy16_s(), memcpy32_s(), memmove_s(), memmove16_s(), memmove32_s()