Pointer Memory Allocation

arrays, c, c++, memory, pointers

Solution

           +---+---+---+---+---+---+---+---+---+---+---+---+
           |      bp0      |      bp1      |      bp2      |
           +---+---+---+---+---+---+---+---+---+---+---+---+
  0x0018ff3c   d   e   f  40   1   2   3   4   5   6   7   8

Assuming size of int is 4 bytes and as bp0 points at 0x0018ff3c.

bp1 = bp0 + 4 = 0x0018ff40 bp2 = bp1 + 4 = 0x0018ff44

Problem

I am trying to learn the concept of pointers in depth. In the below code , I create an array an create a pointer to each of the element. ``` int bucky[5]; int *bp0 = &bucky[0]; int *bp1 = &bucky[1]; int *bp2 = &bucky[2]; cout<<"bp0 is at memory address:"<<bp0<<endl; cout<<"bp1 is at memory address:"<<bp1<<endl; cout<<"bp2 is at memory address:"<<bp2<<endl; ``` These are the memory allocations given to the array elements. bp0 is at memory address:0x0018ff3c bp1 is at memory address:0x0018ff40 bp2 is at memory address:0x0018ff44 With my limited knowledge in c++ , I am aware that memory is allocated contiguously to an array. But looking at the output closely, bp0 looks out of place. According to me bp0 should be at `0x0018ff36`. Or is it that the locations `0x0018ff3c , 0x0018ff40 , 0x0018ff44` are continuous in the CPU? So is it possible that two contiguous memory allocations are not assigned in a progression?

Original source

Related problems