О классах памяти
есть некая функция, одна из переменных этой функции(то есть локальная переменная) описывается достаточно большой структурой(размер памяти для её хранения внушительный). и так получилось, что мне стало необходимо сделать глобальное время жизни-то есть для неё я объявил класс памяти static, естесственно если бы переменная была с локальным временем жизни, по после выхода из блока функции память от неё освобождалась бы, меня интересует-может ли эта освободившаяся память использоваться программой под другие нужды-то есть когда не выполняется функция?
получу ли я выгоду, если поломаю голову и придумаю как в данном случае не использовать static и перейти к использованию класса памяти auto.
Цитата:
Originally posted by yahel
вот такой вот у меня вопрос:
есть некая функция, одна из переменных этой функции(то есть локальная переменная) описывается достаточно большой структурой(размер памяти для её хранения внушительный). и так получилось, что мне стало необходимо сделать глобальное время жизни-то есть для неё я объявил класс памяти static, естесственно если бы переменная была с локальным временем жизни, по после выхода из блока функции память от неё освобождалась бы, меня интересует-может ли эта освободившаяся память использоваться программой под другие нужды-то есть когда не выполняется функция?
получу ли я выгоду, если поломаю голову и придумаю как в данном случае не использовать static и перейти к использованию класса памяти auto.
вот такой вот у меня вопрос:
есть некая функция, одна из переменных этой функции(то есть локальная переменная) описывается достаточно большой структурой(размер памяти для её хранения внушительный). и так получилось, что мне стало необходимо сделать глобальное время жизни-то есть для неё я объявил класс памяти static, естесственно если бы переменная была с локальным временем жизни, по после выхода из блока функции память от неё освобождалась бы, меня интересует-может ли эта освободившаяся память использоваться программой под другие нужды-то есть когда не выполняется функция?
получу ли я выгоду, если поломаю голову и придумаю как в данном случае не использовать static и перейти к использованию класса памяти auto.
Т.е. ты хочешь узнать, может ли программа использовать память, которую освободили переменные, вышедшие из области видимости? Если да, то так и есть: в этом и есть смысл - освобождать память, чтобы она могла использоваться дальше.
Цитата:
Originally posted by yahel
вот такой вот у меня вопрос:
есть некая функция, ...
получу ли я выгоду, если поломаю голову и придумаю как в данном случае не использовать static и перейти к использованию класса памяти auto.
вот такой вот у меня вопрос:
есть некая функция, ...
получу ли я выгоду, если поломаю голову и придумаю как в данном случае не использовать static и перейти к использованию класса памяти auto.
Да, память будет использоваться программой для других нужд. Но другой вопрос как часто вызывается данная функия. Если функция вызывается часто и много, то на инициализацию уйдет много времени особенно если переменная объявлена как динамическая, а память сейчас не такая уж и дорогая, к тому же есть еще и виртуальная. Следовательно вопрос об объявлении переменных по моему разумению решается из соображений удобства использования и скорости программы.
Спасибо за ответ, возьму на заметку.
Я уже переписал программу так, что необходимость
в использовании static отпала.