Estoy frente hoy con un problema en el que tengo que cambiar la memoria a un determinado patrón como 0x 11223344
, de modo que toda la memoria se parece (en hexadecimal):¿Cómo memset() la memoria a un cierto patrón en lugar de un solo byte?
1122334411223344112233441122334411223344112233441122334411223344...
no puedo encontrar la manera de hazlo con memset() porque solo toma un solo byte, no 4 bytes.
¿Alguna idea?
Gracias, Boda Cydo.
Lo único a tener en cuenta es que' buf' podría no satisfacer los requisitos de alineación para un 'uint32_t' en su plataforma. Si' buf' es el resultado de un 'malloc', no necesita preocuparse por esto, pero si se pasa (por ejemplo) como un argumento por código que usted no controla, usted Será necesario que verifique la alineación antes de escribir de esta manera, o de lo contrario, se generarán accesos no válidos en algunos plataformas. –
Otra cosa a tener en cuenta puede ser endianness, si se ejecuta en una computadora pequeña endian y el llenado y la lectura se realizan utilizando tipos con diferentes tamaños (es decir, rellenando con int pero leyendo con char) –
Esto no es muy eficiente; usar 'memmove()' como en mi ejemplo es mucho, mucho más rápido porque usa operaciones especiales de ensamblador y código optimizado a mano. –