Как я знаю, C-подобные строки compiletime хранятся в статической памяти как только один экземпляр. Например, я получил как true
пример gcc 4.6, приведенный ниже. Но я думаю, что это всегда так, и может быть переносимым. Поведение на C и С++ интересно.
#include <iostream>
bool amIportable(const char* value) {
const char* slocal = "Hello";
return (slocal==value);
}
int main() {
const char* s = "Hello";
std::cout << std::boolalpha
<< amIportable(s) << '\n'
<< amIportable("Hello") << '\n';
}