char string1[] = "dog";
char *string2 = string1 + strlen(string1) + 1;
printf("address of string1: %p\n", string1);
printf("address of string2: %p\n", string2);
string2 = malloc(sizeof(char)*4);
string2[0] ='c';string2[1] ='a';string2[2] ='t';string2[3] ='\0';
printf("address of string2: %p\n", string2);
dirección de cadena1: 000000000061FE14 dirección de cadena2: 000000000061FE18 dirección de cadena2: 0000000000AD4D50
Quiero hacer una cadena 'gato' en una ubicación de memoria 0x61FE18, justo después de "perro\0"
Aunque logré obtener con éxito la ubicación de memoria deseada de string2, la función malloc reasigna la ubicación. Quiero que la matriz "cat" comience en 0x61FE18 pero malloc la reasigna a 0xAD4D50
¿Hay alguna manera de asignar una matriz a una ubicación de inicio deseada?
Solución del problema
te refieres a algo como esto?
unsigned char *data = malloc(1000);
if (data) {
strcpy((char*)data, "cat"); // `data` points to "cat" followed by garbage
strcpy((char*)data + 4, "dog"); // `data` points to "cat\0dog" garbage
(int*)(data+24) = 0x01020304; // `data` points to "cat\0dog\0XXXXXXXXXXXXXXXX\1\2\3\4"
// depending on endianness and sizeof int
free(data);
}
No hay comentarios:
Publicar un comentario