GOOGLE ADS

domingo, 1 de mayo de 2022

¿Cómo se crea una matriz en una ubicación de memoria específica? C

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

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...