утечка памяти с ++ со структурами? - PullRequest
0 голосов
/ 13 ноября 2010

Допустим, я выделил память для указателя на структуру:

CatStructure * cat; // assume a CatStructure has name and weight

Допустим, я инициализирую cat следующим образом:

cat->name = "pippy";
cat->weight = 100;

Если я сохраню ссылку на cat-> nameи cat-> weight, мне все еще нужно сохранить ссылку на cat?Другими словами, нужно ли сохранять ссылку на указатель на структуру , если Я уже сохранил ссылки на ее элементы?

Ответы [ 2 ]

1 голос
/ 13 ноября 2010

CatStructure *cat; не выделяет память для данной структуры, она просто дает вам место для хранения ссылки на указатель.Мы скажем, что вы это знаете, и что вы new правильно делаете, чтобы фактически выделить память.

Каждый new должен соответствовать соответствующему вызову delete или вам будет утечка памяти.Технически, если вы сохраняете ссылку на один из членов правильно, вы могли бы сделать некоторые математические указатели, чтобы восстановить ссылку на структуру, но это излишне глупо.Просто сохраните указатель, чтобы вы могли очистить его позже.

0 голосов
/ 16 ноября 2010

если вы удалите структуру, любые ссылки на ее указатели или элементы больше не будут действительными.эти недействительные указатели / ссылки называются «висячие».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...