![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
rukudias |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 28.2.2007 Репутация: 0 Всего: 0 |
Привет Всем!
Читая одну интересную книгу наткнулся на следующее определения
мож ктонить привести пример для двух послед способов и если первый способ интерпритирован мной не привильно то и для него тоже. Спасибо. |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: нет Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
rukudias, к сожалению, я тоже слабо себе представляю, как можно с помощью обычного new выделить память в области стека текущего фрейма функции. А вот все остальное вполне возможно. Например, со стандартным контейнером (например, list) нет никаких проблем: делаешь статический объект std::list<std::vector<char> > и при каждом вызове new возвращаешь адрес данных нового вектора.
|
|||
|
||||
500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
Там все просто, указатель стека сдвинули, вот вам и память выделили, обычно там все локальные переменные и структуры хранятся, соответственно после выхода из функции указатель стека на место возвращаеться и как бы все данные теряются (на самом деле не совсем так, пока они не перезаписаны то они есть). -------------------- |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
||||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Такие фокусы, только для сумасшедших. ![]() Достаточно одного прерывания в момент возврата, и вместо данных окажется полная хрень. |
|||
|
||||
500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
Господа я же не говорю что данными в стеке после выхода нужно пользоваться.
-------------------- |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Есть функция alloca(size) - она выделит память на стеке, которой можно пользоваться до выхода из функции, вызвавшей её.
Но я не уверен, что её можно использовать в C++, если на стеке будут создаваться обычные объекты C++, имеющие конструктор и деструктор. |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
почему нет, это же внутреннее дело operator new()
http://codepad.org/vwor2opV http://liveworkspace.org/code/54212f595885...b100ec85d05c660 |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
это я глупость написал - alloca() внутри new(). после выхода из new стек очищается
Добавлено через 11 минут и 59 секунд но обычным объектам alloca() не мешает http://codepad.org/dxPgNIFO |
|||
|
||||
500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
GlobalAlloc рулит )))
-------------------- |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |