Например:
void *p1 = someStringPointer; void *p2 = p1;
Хотя это два уникальных указателя, учитывая, что они оба указывают на одно и то же значение, они все еще разные объекты памяти?
p1 и p2 располагаются по двум разным адресам в памяти (в данном случае это область стека), но они содержат одинаковое значение, их значение равно someStringPointer.
p1
p2
someStringPointer
Если вы печатаете адрес p1 и p2
printf("%p\n", (void *) &p1); printf("%p\n", (void *) &p2);
У них разные адреса, так что да, это разные объекты памяти.