tempString = myString;
В приведенном выше операторе оба myString, tempString
указывают на место, где хранится "Never Hard"
.Итак, ошибки нет.
И я не понял, когда вы имели в виду - "But if I try to alloc and init the tempString, it will bring an error."
Редактировать 1
Второй фрагмент кода является примером утечки памяти.tempString
выделяется ячейка памяти.Давайте поработаем с примером -
myString -> MemoryLocation_1 that has "Never Hard"
tempString -> MemoryLocation_2 and the location it is pointing to isn't intialized with any value.
Now, with this statement -
tempString = myString;
Both myString and tempString -> MemoryLocation_1 that has "Never Hard"
А как насчет MemoryLocation_2, полученного из бесплатного магазина.Он не возвращается обратно в свободное хранилище и лежит там, к которому ни одна программа не может получить доступ до завершения программы.Таким образом, утечка памяти .Надеюсь, что это поможет понять.