Subtraction of non-divisible pointer addresses

Viewed 1095

Is subtraction of non-divisible pointer addresses defined in C? In C++?

Here's an example:

void* p = malloc(64);

int* one = (int*)((char*)p);
int* two = (int*)((char*)p + 7);

printf("%x %x %d %d\n", one, two, sizeof(int), two - one);

Ideone link.

I get the output 8a94008 8a9400f 4 1, so it seems like it does the division and truncates the remainder. Is the behavior defined?

2 Answers
Related