Теоретически они разные. Первая строка является константой и не может быть released
. Второй (опять-таки теоретически) размещается в куче и должен быть released
, когда вы закончите с ним. (Это согласно правилам управления памятью)
Однако в данном конкретном случае разницы нет, потому что инициализатор просто вернет исходную строку. поскольку компилятор достаточно умен, чтобы видеть, что «ага, вы выделяете неизменный объект из константной строки, поэтому результирующая строка гарантированно будет идентична исходной константной строке, поэтому я могу просто пропустить все выделение вещь и просто повторно использовать постоянную строку ".
Так что получается, что они будут одной и той же строкой. Тем не менее, ваши начальные реакции кишечника являются правильными, и вы должны продолжать следовать им. :)