2016-11-19 2 views
1

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

Однако, если я храню (type) * (name) = (static array) в некоторой функции, мне нужно позвонить delete на это?

+1

Нет, вызов 'delete' для любого указателя, который не был выделен' new', или даже смешение 'delete []' и 'delete', будет неопределенным поведением. – dasblinkenlight

ответ

0

Если под «статическим массивом» вы имеете в виду вы объявили static int x[100]; где-то, и ваша функция возвращает указатель на первый элемент x (например, функции int *foo заканчивается return x;, и вы int *bar = foo();), нет, вы определенно не» t хочу delete этот указатель; он не был выделен из кучи new, поэтому он не должен быть delete d; delete использует только память кучи.

0

delete был бы необходим, если и только если целевая память была выделена new.

Смежные вопросы