eclarando variáveis dentro de loops, boas ou más prática

Questão 1 Declarar uma variável dentro de um loop é uma boa ou má prátic

Eu li os outros tópicos sobre se há ou não um problema de desempenho (a maioria disse não) e que você sempre deve declarar variáveis o mais próximo possível de onde elas serão usadas. O que estou pensando é se isso deve ou não ser evitado ou se é realmente preferid

Exemplo

for(int counter = 0; counter <= 10; counter++)
{
   string someString = "testing";

   cout << someString;
}

Questão 2 A maioria dos compiladores percebe que a variável já foi declarada e apenas pula essa parte, ou ela realmente cria um ponto para ela na memória toda ve