История изменений
Исправление cvs-255, (текущая версия) :
В чем же UB? 0 - ничем с точки зрения языка не хуже любого другого указателя.
И если в адресном пространстве есть адрес 0, то даже сегфолта не будет.
например, на x86 в реальном режиме можно сделать что-то такое
class rm_interrupt {
void (*handler)(void);
public:
void set_handler(void (*new_handler)(void)) {handler = new_handler;}
}
.....
void main(void)
{
rm_interrupt *zero = 0;
zero->set_handler(zero_int_hdl);
}
Исправление cvs-255, :
В чем же UB? 0 - ничем с точки зрения языка не хуже любого другого указателя.
И если в адресном пространстве есть адрес 0, то даже сегфолта не будет.
например, можно сделать что-то такое
class rm_interrupt {
void (*handler)(void);
public:
void set_handler(void (*new_handler)(void)) {handler = new_handler;}
}
.....
void main(void)
{
rm_interrupt *zero = 0;
zero->set_handler(zero_int_hdl);
}
Исходная версия cvs-255, :
В чем же UB? 0 - ничем с точки зрения языка не хуже любого другого указателя.
И если в адресном пространстве есть адрес 0, то даже сегфолта не будет.
например, можно сделать что-то такое
class rm_interrupt {
void (*handler)(void);
public:
void set_handler(void (*new_handler)(void)) {handler = new_handler;}
}
.....
void main(void)
{
rm_interrupt *zero = 0;
zero->set_handler(zero_int_hdl);
}