Best practice for memcpy in C
Pregunta
Is it same deprecated in GNU as in Microsoft C runtime?
Is deprecation, if there is such in GNU C, enforced by later standard of C after 89/90 or the compiler?
If it's GNU C compiler, since when and does it provide such a secure alternative memory operating function like
memcpy_s
to the deprecatedmemcpy
in Microsoft C?If it's later C standard after 89/90, since when and does it provide such a secure alternative memory operating function like
memcpy_s
to the deprecatedmemcpy
in Microsoft C?If no such deprecation in GNU C runtime, is there a function which is neither among those memory operations (name started with
mem
) nor the one I know asbcopy
, but I can use to copy memory safe in that it takes a parameter about length of the destination?If there is/are, could you please list as many as possible?
Solución
memcpy_s
has been in added since C11 but is an optional extension. memcpy
has not been deprecated in C and is not an obsolescent function.
glibc
as of now does not support _s
functions and there is no plan (AFAIK) for glibc
team to support them.
Otros consejos
The function memcpy
is not deprecated. It's one of the safest and most useful functions in the library. The memcpy_s
function became standard in C11 (optional, see "Bounds-checking interface" in Annex K).