Это может выглядеть как тривиальная проблема. Извините в этом случае, я не могу найти реальный путь. Я понимаю, что автоматические переменные не инициализированы. Поэтому приведенный ниже фрагмент кода, скорее всего, будет выгружен в block-2
.
char *p;
if(NULL == p)
{
//do something block-1 statement
}
else
{
//do something else block-2 statement
}
Теперь в большинстве платформ значение автоматической переменной по умолчанию равно 0 или NULL, особенно SUSE Linux.
Вопрос
а. Есть ли какой-либо флаг компилятора или любая другая опция, которая заставит установку локальной переменной к значению «мусора», если не инициализировано?
PS: я знаю, что инструмент статического анализатора легко сможет обнаружить проблему. Я просто хотел узнать, можно ли это сделать во время выполнения, также с помощью некоторых настроек флагов / опций.
Я использую платформы SUSE 10 / HP-UX и AIX.