Форум программистов, компьютерный форум, киберфорум
Наши страницы

Грязный хук. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Классы и функции http://www.cyberforum.ru/cpp-beginners/thread100156.html
Вопрос по поводу "идеологии" написания классов. Как лучше писать реализации? Есть ли смысл создавать функции, которые по сути аналогичны предназначению метода класса и просто вызывать их из...
C++ 5 программ. Срочно 1.Написать программу номер дня недели,название дня недели или сообщение об ошибке ,если введены неверные данные 2.написать программу которая выводит таблицу квадратов первых 10 целых полодительных... http://www.cyberforum.ru/cpp-beginners/thread100133.html
Метод Гаусса для решения СЛАУ с использованием одномерного массива C++
Доброго всем времени суток. У меня есть прога для двумерного массива #include <stdio.h> #include <iostream> #include <conio.h> using namespace std; void f(double an, double bn,int m) { ...
Сумма квадратов цифр любого числа в итоге равняется числу из интервала [1,9]. C++
Помогите решить с объяснениями. Сумма квадратов цифр любого числа в итоге равняется числу из интервала . Вывести количество и сами числа, сумма цифр которых равны либо 1, либо 4, из интервала от 1...
C++ В вещественной матрице размером NxN найти максимальный и минимальный элементы. http://www.cyberforum.ru/cpp-beginners/thread100116.html
Помогите решить с объяснениями. В вещественной матрице размером NxN найти максимальный и минимальный элементы. Переставить строки, в которых они находятся. Если они находятся в одной строке,...
C++ вычисление простых чисел в книге написана программа, про вычисление простых чисел. #include <iostream> #include <math.h> using namespace std; int main() { int n; bool prostoe = true; double koren =... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
18241 / 6366 / 435
Регистрация: 30.03.2009
Сообщений: 17,594
Записей в блоге: 28
01.03.2010, 18:32
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Evg, по поводу условий легальности delete this: [16.15] Is it legal (and moral) for a member function to say delete this?
А у тебя есть 100% уверенности по всем пунктам, которые написаны в этом факе? Т.е. если ты между delete и return не написал ни одной строки, то есть у тебя гарантия 100%, что между ними компилятор не наплодит какого-то кода (хотя бы по части exception'ов, о которых писал выше), который может зацепить this?

Добавлено через 8 минут
Просто вот о чём я пишу:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class T
{
public:
  T();
  ~T();
};
 
extern int func2 (void);
 
int func (void)
{
  T t;
 
  return func2();
}
Функция func проще некуда, однако код нехилый

Код
...
        call    _Z5func2v, 0  <--- это вызов func2
         nop
.LLEHE1:
        mov     %o0, %l0
        add     %fp, -24, %g1
        mov     %g1, %o0
.LLEHB2:
        call    _ZN1TD1Ev, 0  <--- это вызов деструктора t (ожидаемо)
         nop
.LLEHE2:
        st      %l0, [%fp-28]
        b       .LL1    <---- это переход в конец процедуры (на return)
         nop
.LL6:
        st      %i0, [%fp-32]  <--- отсюда начинается код по размотке стека
.LL2:
        ld      [%fp-32], %l0
        add     %fp, -24, %g1
        mov     %g1, %o0
        call    _ZN1TD1Ev, 0
         nop
        st      %l0, [%fp-32]
.LL4:
        ld      [%fp-32], %o0
.LLEHB3:
        call    _Unwind_Resume, 0
         nop
.LLEHE3:
.LL1:
        ld      [%fp-28], %i0  <--- вот здесь реальный выход из процедуры
        ret
        restore
.LLFE2:
        .size   _Z4funcv, .-_Z4funcv
Данный тест не совсем подходит к нашей теме, поскольку в процедуре мы имеем локал типа класс. Но точно ли нет ситуаций, когда в "простом" методе не выскочит вот такой вот код. Я плохо владею плюсами, чтоы экспериментировать. Может для этого нужно какое-то ацкое множественное виртуальное наследование или ещё что-то типа того. К тому же здесь используется версия gcc, умеющая работать с libunwind, а другие компиляторы могут это дело реализовывать по другому и механизм будетболее тяжёлым
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru