Size: a a a

IT KPI C/C++ ХВ (не UB)

2020 September 13

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Там своя философия
источник

JC

Julian =) Coffee in IT KPI C/C++ ХВ (не UB)
Макс Заика
Их, вроде бы, можно избегать с помощью амперсанда
И это обычно плохой знак, насколько я помню
источник

МЗ

Макс Заика in IT KPI C/C++ ХВ (не UB)
Julian =) Coffee
И это обычно плохой знак, насколько я помню
Почему?
источник

JC

Julian =) Coffee in IT KPI C/C++ ХВ (не UB)
Например в таком случае нельзя положить null
источник

JC

Julian =) Coffee in IT KPI C/C++ ХВ (не UB)
А иногда может быть полезно
источник

МЗ

Макс Заика in IT KPI C/C++ ХВ (не UB)
Julian =) Coffee
Например в таком случае нельзя положить null
А если ссылка константная?
источник

JC

Julian =) Coffee in IT KPI C/C++ ХВ (не UB)
Ну ладно, я просто тихо хейчу C++ всегда, тут не скажу. Просто слышал, что часто лучше принимать по указателю, чем по ссылке.
источник

JC

Julian =) Coffee in IT KPI C/C++ ХВ (не UB)
Или не часто, а иногда.
источник

МЗ

Макс Заика in IT KPI C/C++ ХВ (не UB)
Julian =) Coffee
Ну ладно, я просто тихо хейчу C++ всегда, тут не скажу. Просто слышал, что часто лучше принимать по указателю, чем по ссылке.
Вкратце, переходите на раст?)
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Ссылки на первом этапе знакомства кажутся удобными и очень простыми, но как только делаешь сложные выражения вся логика укатывается
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
И ловить ерроры компилятора становится привычным занятием
источник

AB

Aleksey Belkevich in IT KPI C/C++ ХВ (не UB)
Как говорят, уметь готовить надо
источник

JC

Julian =) Coffee in IT KPI C/C++ ХВ (не UB)
Макс Заика
Вкратце, переходите на раст?)
Мне не кажется, что нужно переходить на Rust.
источник

JC

Julian =) Coffee in IT KPI C/C++ ХВ (не UB)
Julian =) Coffee
Мне не кажется, что нужно переходить на Rust.
Т.е. как язык для обучения системному програмированию, указателям, памяти и вот этому всему он просто отличный (для меня, по крайней мере). Да и вообще язык хорошо продуман и сделан.
Но вакансий по нему меньше, да и кода написано не так много, поэтому использовать его имеет смысл в нужных местах, а не везде.
источник

JC

Julian =) Coffee in IT KPI C/C++ ХВ (не UB)
Кстати насчет того кода выше
источник

V

Vsevolod in IT KPI C/C++ ХВ (не UB)
Макс Заика
#include <iostream>

int main()
{
 int a = 5;
 int* b = &a;
 delete b;
 *b = 6;
 std::cout << a;

 return 0;
}
о, я придумал генитальную аналогию
ты записываешь в контакты адрес своего семейного доктора
а потом пытаешься его убить)
зачем?
источник

МЗ

Макс Заика in IT KPI C/C++ ХВ (не UB)
Vsevolod
о, я придумал генитальную аналогию
ты записываешь в контакты адрес своего семейного доктора
а потом пытаешься его убить)
зачем?
Это не практичный код, это чисто мой интерес. Я думал, он через segmention fault сработает
источник

JC

Julian =) Coffee in IT KPI C/C++ ХВ (не UB)
Я запустил его в gdb, там sigabrt.
free() может отличить указатель, который выделен через malloc()
(насколько я помню, он в место перед этим адресом пишет какую-то метаинфу) от рандомного указателя.
Поэтому когда ему подсовывают указатель на стэк, он говорит, что это не его указатель и выдает SIGABRT.
источник

JC

Julian =) Coffee in IT KPI C/C++ ХВ (не UB)
Ну это в glibc, конечно.
источник

JC

Julian =) Coffee in IT KPI C/C++ ХВ (не UB)
И sigabort можно даже перехватить вроде
источник