Привет, члены stackoverflow,
В настоящее время я пробую свои силы на c ++ (в основном программировал на C#) и интересовался управлением памятью при использовании общих указателей.
I У меня есть класс, который в основном читает набор переменных из текстового файла:
constructor(string file){
//..do stuff with file
s = new string(valuefromfile);
array_i = new int{value1, value2}
}
private:
shared_ptr<string> s;
shared_ptr<int*> array_i;
Насколько я понял, sharedpointers помогают с распределением / утечкой памяти, поскольку выделенная память будет освобождена, как только все указатели не будут более того, мне не нужно освобождать их вручную, например, вызывая деконструктор классов или, если они используются в подпрограмме.
Теперь мой вопрос
Если я читаю в новом файле с классом , "s" и "array_i" получат новые значения:
void readnewfile(string file){
//...do stuff with file
s = new string(newstring);
i = new int{ newvalue1, newvalue2, newvalue3 };
}
теперь на начальные значения больше не ссылаются эти умные указатели. Означает ли это, что память освобождена, или мне нужно следить за чем-то определенным c, чтобы предотвратить утечки памяти?
Приветствия