Get memory address of Objective C object?

483 Views Asked by At

Is there any better way to get the memory address than this?

NSLog(@"%p", anObject);

I would rather get the plain long value.

1

There are 1 best solutions below

2
Andrew Romanov On BEST ANSWER

Also you can caste some Type* to intptr_t, and look at this address in decimal representation:

NSLog(@"%lu", (uintptr_t)anObject);

To represent pointer address as integer in C exists 2 types: intptr_t and uintptr_t.

intptr_t is defined as __darwin_intptr_t.
and __darwin_intptr_t defined as long:

typedef long            __darwin_intptr_t;

uintptr_t defined as unsigned long:

typedef unsigned long           uintptr_t;

I think what for uintptr_t I should use %lu and for intptr_t I should use %li:

NSLog(@"%lu", (uintptr_t)anObject);
NSLog(@"%li", (intptr_t)anObject);