Jak wiem kompilacja C-podobne ciągi są przechowywane w pamięci statycznej jako tylko jedno wystąpienie. Na przykład dostałem zarówno true
na przykładzie przykładu gcc 4.6 poniżej. Ale zastanawiam się, czy to zawsze prawda i może być przenośna. Zachowanie w C i C++ jest interesujące.Łańcuchy w statycznych instancjach pamięci liczyć
#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';
}