Double Pointer in C++: Understanding Memory Allocation

What is the value of ptr+1?

Given the following data: double *ptr = new double[47]; assuming new returns the address 13000.

Answer:

The value of ptr+1 is 13008.

When a new pointer is created, it allocates memory on the heap. When an array is allocated, the new expression returns a pointer to the first element of the array. Here, the new expression allocates memory for an array of 47 doubles and returns a pointer to the first element of the array. The first element's address is 13000, and since each double is 8 bytes long, the address of the next double in the array is 13008. As a result, ptr+1's value is 13008.

In this problem, we are using a dynamic array of 47 doubles and then attempting to obtain the address of the second double. To allocate memory on the heap, we use the new operator. It returns the address of the memory block allocated in the heap. We use a double pointer to keep track of the memory address where the first double element is stored, and we allocate memory for 47 double elements by using the following statement: double *ptr = new double[47];

This line of code allocates memory for 47 doubles in the heap and assigns the address of the first element to ptr. Here, ptr will point to the first element of the array. If we add one to ptr, we'll get the address of the next double. We are incrementing ptr by one, which means that ptr+1 will point to the address of the second element of the array.

Therefore, the value of ptr+1 is 13008, the address of the next double after the one ptr currently points to.

← Advantages of raid 5 over raid 1 Nuts and bolts problem understanding the matching pair algorithm →