[ Foro de C ]

Sobre la función memcpy()

18-Jun-2007 04:54
Carlos Ruiz
1 Respuestas

Hola:

Muchas gracias por responder mi duda anterior... ahora lo tengo todo clarísimo... : )

Pero tengo otra duda:

Cómo funciona exactamente la función memcpy()?

Sirve sólo para copiar strings? (sirve sólo para operar en arreglos tipo char?)

Cuál es la cantidad máxima de bytes que puede copiar de un arreglo a otro con una sola llamada? (depende esa cantidad del compilador, la máquina o del Sistema Operativo que se esté usando? Qué tal en Windows XP, compilador Dev-cpp, CPU amd athlon, 256MB ram?)

Espero su respuestaa.

Saludos.

Carlos : )


03-Jul-2007 19:10
Nacho Cabanes (+32)

La función memcpy se usa así:
void *memcpy(void *destino, const void *origen, size_t n);
Y copia "n" bytes desde la posición de origen a la de destino, que no necesariamente tienen por qué ser strings. Por ejemplo, un uso habitual de "memcpy" sería volcar un bloque grande de información de un sitio a otro, como cuando en un juego preparas toda la información en una pantalla oculta y, llegado el momento, vuelcas esa pantalla oculta a la pantalla visible.

La cantidad de bytes máxima a copiar depende del sistema y del compilador. Por ejemplo, en equipos con MsDos era 64 K por limitaciones de la memoria segmentada; en sistemas actuales (32 bits) con compiladores como GCC debería andar por los 2 Gb (el tamaño sería un entero de 32 bits).






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)