Я видел во многих местах, что люди часто используют опцию -fomit-frame-pointer
при компиляции C / интересно код C++ и, использование той безопасной опции? Для чего это используется?
Большое спасибо, наилучшие пожелания.
Этот вариант безопасен, но усложняет отладку. Обычно компилятор C выводит код, который сохраняет в обычном регистре ( ebp
на x86) указатель на кадр стека для функции. Отладчики используют это для распечатки содержимого локальной переменной и другой подобной информации. Флаг -fomit-frame-pointer
указывает gcc не беспокоиться об этом регистре. В некоторых ситуациях это может привести к небольшому увеличению производительности, в основном из-за уменьшения объема кода (что лучше для кеша) и дополнительного доступного регистра (особенно на x86 в 32-битном режиме, который, как известно, испытывает нехватку регистров).
Можно написать help-method:
public bool Contains(int x, params int[] set) {
return set.Contains(x);
}
и использовать короткий код:
var resultset = from x in collection
where Contains(x, 2, 3, 4, 5)
select x;
-121--1040667- Я не знаю, вызывает ли это вашу конкретную проблему, но всегда следует проверять указатель FILE *
, возвращаемый fopen ()
, если он имеет значение NULL
.
Если ваш код не зависит от неопределенного поведения, то он совершенно безопасен. Это может привести к появлению неопределенных ошибок поведения.