I have a simple struct called node which holds a value + 2 pointers to next/previous nodes.
template <class T>
struct node {
     node<T> *prev = NULL;
     node<T> *next = NULL;
     T data;        
};
Here we have the function which adds a new node to the end.
void push_back( T val ) {           
    node<T> *n = new node<T>;   // create node to hold val
    n->data = val;              // set node data with val
    if ( node_count == 0 ) {     
        begins = n;             // begins points to first node          
    }
    else{
        ends->next = n;         // set next in ends
        n->prev = ends;         // set previous             
    }
    ends = n;                   // update ends
    node_count++;               // update list size
}                                       
In main we create 100 linked nodes, each holding a unique int value.
for (int i = 0; i != 100; i++){  push_back(i); }
Here are the pointers to the first/last node:
node<T> *begins; 
node<T> *ends; 
The trouble starts when attempting to apply pointer arithmetic:
std::ptrdiff_t node_sum = ends - begins;
Somehow node_sum == 528, if I do a x32 compile then node_sum == 781.
Why is node_sum not 100 ?
 
     
    