Здравствуйте, Аноним, Вы писали:
А>Eсть код:
class unique {
// Эта память будет размещена в объекте
char buff[20]; // эта память будет размещена в стёке?
unique(char *p) { ... }
//...
};
//Это типа глобальный объект
set<unique> s;
int main ()
{
// А это, типа, локальный объект
set<unique> s;
s.insert("zxc");
/// ...
s.clear();
}// В этой точке у тебя разрушится локальный объект
//А глобальный s будет разрушен внутри "системного" кода завершения работы программы
А>после того как отработали с сетом и вызвали clear() статическая память освободится и будет использованна другими частами программы или нет?
А>Или лучше определить set в процедуре и по завершению её память освободится.
Когда вызывается std::set::clear разрушает объекты, хранящиеся в множестве (то есть вызывает ~unique). Память под эти объекты, он может не освобождать — повторно заюзает потом. Память он освободит в своем деструкторе std::set::~set. Этот деструктор вызовется автоматом.
Из приведенного кода, беспокоится об освобождении unique::buff не надо. Все будет освобождено автоматически.
Непонятно — зачем у тебя два объекта s. Один локальный, другой глобальный.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --