Home > OS >  C Hexadecimal Memory locations
C Hexadecimal Memory locations

Time:03-09

Okay, I'm working on learning C and working with some memory locations.

Assume the sizeof(double) is 8

and we have a double dbl_array[5] with a memory location of 0x7fffffffe360.

What would the memory location be for &(dbl_array[4])?

When running locally I can see that the location goes from b34b0 to b34d0, but I'm stuck on how to apply this to the assumed location.

Any tips would be amazing!

CodePudding user response:

Calculate the address in bytes as base 4*sizeof(double). So 0x7fffffffe360 4*8.

CodePudding user response:

What would the memory location be for &(dbl_array[4])?

Without knowing the type of computer and/or operating system running this program, this question cannot be answered; it is only possible to say which address this element would have on 99% of all computers:

If X is an array of the data type Y and the address of the element X[n] is Z, the address of the element X[n 1] is Z sizeof(Y).

For this reason, the address of the element X[n M] is Z M*sizeof(Y).

The address of an array is the address of element X[0].

Now simply take a calculator that can calculate hexadecimal numbers and perform the following calculation: 0x7fffffffe360 4 * 8

However, there are counterexamples where the address calculation is done differently: The "huge" memory layout on x86-16 for example...

  • Related