LINUX.ORG.RU

[неуч][c/c++] Об утечках памяти


0

1

Помогите неучу. Интересует ситуация такого вида:

...
char * another_function() {
  char * str = new char [10];
  ...
  return str;
}
...
void function() {
  char * var = another_function();
  ... // какой-то код. malloc, new не используются
}
...

Как-то так.

Нужно ли делать free в конце function?

Use Go, Luke!

anonymous
()
Ответ на: комментарий от AIv

нифига подобного.

когда fopen делаешь, fopen возвращает указатель на структуру FILE... и нужно потом закрывать файл по средствам fclose()

Так что нужно написать в таком случае функцию

another_cleanup(another_ptr ptr)
{
  delete [] ptr;
}

anonymous
()
Ответ на: комментарий от anonymous

(это в общем случае)

в случае автора:

another_cleanup(char* ptr)
{
  delete [] ptr;
}

anonymous
()

В плюсцах сейчас модна идеология стека. И RAII, соответственно. Потому что управление динамической памятью в этом языке это реально Ад и Израиль.

Суть в том, что создаешь все объекты на стеке, а для динамических данных юзаешь какой-нибудь std::vector. И, естественно, стараешься все передавать по значению.

А вообще, лучше не юзай плюсцы.

anonymous
()
Ответ на: комментарий от yoghurt

RVO может быть, а может и не быть :)

тогда rvalue references.

Begemoth ★★★★★
()
Ответ на: комментарий от anonymous

Про смарт-автоматик-шаред-etc-поинтеры забыл

yoghurt ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.