C ++ Qual é o comportamento indefinido mais antigo pode se manifestar?

Estou ciente de que o comportamento indefinido pode potencialmente causar qualquer coisa, o que torna potencialmente insignificante qualquer programa que contenha o UB. Eu queria saber se existe alguma maneira de identificar o primeiro ponto em um programa que o comportamento indefinido poderia causar problemas. Aqui está um exemplo para ilustrar minha pergunta.

void causeUndefinedBehavior()
{
   //any code that causes undefined behavior
   //every time it is run
   char* a = nullptr;
   *a;
}


int main()
{
 //code before call
 //...
 causeUndefinedBehavior();
 //code after call
 //...
}

Do meu entendimento, os possíveis tempos que o comportamento indefinido poderia ser evocado (não necessariamente manifestado) são:

QuandocauseUndefinedBehavior() é compilado.Quandomain() é compilado.No momento em que o programa é executado.No momentocauseUndefinedBehavior() É executado.

Ou é o ponto em que o comportamento indefinido é evocado completamente diferente para cada caso e cada implementação?

Além disso, se eu comentei a linha ondecauseUndefinedBehavior() é chamado, isso eliminaria o UB, ou ainda estaria no programa já que o código contendo UB foi compilado?

questionAnswers(5)

yourAnswerToTheQuestion