Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

как происходит вызов функции в с++?

32K
11 августа 2008 года
JihN
13 / / 11.05.2008
Расскажите, пожалуйста, как происходит вызов функции в с++, на низком уровне вплоть до адресов и vtable.
моё представление таково(наверняка не правильно): тело функции копируется в кучу (стек?), идентификатору присваивается адрес(смещение от начала кода?), при вызове происходит переход по данному адресу, работает тело функции, происходит возврат...
вопросы: где находится стек, когда он выделяется? как передаются параметры функции, возвращаемое значение? что происходит с методами классов? почему работают методы типа
Class::Destroy(void)
{
delete this;
}
или поделитесь ссылкой на толковую статью..
очень хочется разобраться
спасибо заранее.
пс. гуглил, но ничего толкового не нашёл.
288
11 августа 2008 года
nikitozz
1.2K / / 09.03.2007
Цитата: JihN
как передаются параметры функции, возвращаемое значение?



Если пишите в Builder'е, там есть одно хорошее окно при отладке View->Debug Windows->CPU. В свое время изучал вызов функций именно по этому окну. В MSVC2005 Debug->Windows->....

Насчет vtable, почитайте Страуструпа или Дейтеля.

590
11 августа 2008 года
Gigahard
223 / / 03.04.2006
Уже в свое время спрашивал на этом форуме, чем чревато delete this.
ИМХО это очень мутное харакири, которое непонятно как завершается. Не понятно, куда возвращается управление, после вызова delete this.
288
11 августа 2008 года
nikitozz
1.2K / / 09.03.2007
Цитата: Gigahard
Уже в свое время спрашивал на этом форуме, чем чревато delete this.
ИМХО это очень мутное харакири, которое непонятно как завершается. Не понятно, куда возвращается управление, после вызова delete this.



Довольно мутное, но все зависит от того, где происходит вызов. Если после этого вызова к объекту гарантировано никто обращаться не будет, то при большом желании и большой осторожности - это может работать вполне корректно.
А управление возвращается по адресу возврата, записанному в стеке.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог