It is implementation-defined whether identical string literals are treated as distinct objects. Consider this code snippet:
extern const char msg1[] = "hello";extern const char msg2[] = "hello";int main(){ bool eq = (msg1 == msg2); //true or false? result is implementation defined return 0;}
Some implementations might store the constants msg1 and msg2 at the same memory address (on such implementations, the value of the variable eq is ‘true’). Other implementations store msg1 and msg2 in two distinct memory addresses, and in this case, eq is ‘false’.