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()