Skip to content

Instantly share code, notes, and snippets.

@nlw0
Last active October 28, 2018 16:28
Show Gist options
  • Save nlw0/2d46adc807aeb12e5b065176137ddcbf to your computer and use it in GitHub Desktop.
Save nlw0/2d46adc807aeb12e5b065176137ddcbf to your computer and use it in GitHub Desktop.
Testing the memory locality of a linked list in C++
#import<iostream>
#import<list>
struct Node {
int value;
Node* next;
Node(int v, Node* n=NULL) : value(v), next(n) {}
};
int main(int, char**) {
Node * a = new Node(0);
for(int i = 1; i < 16; i++)
a = new Node(i, a);
for(Node * b = a; b != NULL; b=b->next)
std::cout << "address abs " << b
<< " rel " << a - b
<< " value " << b->value
<< std::endl;
}
/*
address abs 0x55634c67d050 rel 0 value 15
address abs 0x55634c67d030 rel 2 value 14
address abs 0x55634c67d010 rel 4 value 13
address abs 0x55634c67cff0 rel 6 value 12
address abs 0x55634c67cfd0 rel 8 value 11
address abs 0x55634c67cfb0 rel 10 value 10
address abs 0x55634c67cf90 rel 12 value 9
address abs 0x55634c67cf70 rel 14 value 8
address abs 0x55634c67cf50 rel 16 value 7
address abs 0x55634c67cf30 rel 18 value 6
address abs 0x55634c67cf10 rel 20 value 5
address abs 0x55634c67cef0 rel 22 value 4
address abs 0x55634c67ced0 rel 24 value 3
address abs 0x55634c67ceb0 rel 26 value 2
address abs 0x55634c67ce90 rel 28 value 1
address abs 0x55634c67ce70 rel 30 value 0
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment