'How do you create an array in a specific memory location? 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);
address of string1: 000000000061FE14
address of string2: 000000000061FE18
address of string2: 0000000000AD4D50
I want to make a 'cat' string at a memory location 0x61FE18, right after "dog\0"
Even though I've managed to successfully get the desired memory location of string2, the malloc function reassigns the location. I want the "cat" array to start at 0x61FE18 but malloc reassigns it to 0xAD4D50
Is there a way to allocate array to a desired starting location?
Solution 1:[1]
you mean something like this?
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);
}
Solution 2:[2]
How do you create an array in a specific memory location? C
Is there a way to allocate array to a desired starting location?
No standard way.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | pmg |
| Solution 2 |
