Одинаковый адрес (0x3e53f0 в моём случае).
Тут 3 варианта:
1) на вашей платформе, компиляторе, сборке и версии Qt это не поддерживается
3) вы не умеете пользоваться дебаггером.
1). Провел тест на работе, создается только одна копия текста. Хотелось бы теперь выяснить, от чего это зависит? По сути implicit sharing не должен зависеть от платформы и компилятора.
3). Похоже что не умею. Как вы привели отображение переменных программы к виду как на картинке? Т.е. так, чтобы отображались и private члены класса.
И прошелся по памяти в дебагере и к моему удивлению обнаружил две копии моей строки!
Как это понимать?
"string" - тоже переменная (пусть и безымянная и изменить Вы ее не можете), поэтому в памяти она есть. И наоборот, str1 хранится в памяти как 2 байта на символ - в общем, проблемы с "прошелся"
А то что экспериментируете и проверяете - это хорошо и правильно.
Прошелся, это значит открыл редактор памяти и посмотрел. Дома у меня рядом лежало две одинаковые строки и переменные str1 и str2 ссылались на них.
На работе только одна строка в памяти.
И там и там Qt 4.7.3, Windows 7.