Pergunta sobre tamanho de tabuleiro

Pergunta sobre tamanho de tabuleiro

por Jorge Taneda -
Número de respostas: 2

No exemplo "Possível falta de consistência ao voltar jogadas" descrito nas dicas para o EP2, o programa gera um tabuleiro com 4 linhas e 4 colunas para uma entrada 3 x 3.

Claro, isso porque a linha 0 e coluna 0 também são contadas, mas meus livros de programação dizem que não é seguro gravar coisas em posições fora das definidas por um vetor/matriz - se eu aloco espaço para um vetor de 10 posições, por exemplo, o programa entende que é um vetor de 0 a 9, totalizando 10 posições, e tentar manipular a posição 10 poderia ocasionar bugs (isso é verdade mesmo?). Tendo isso em mente, fiz meu ep para gerar um tabuleiro de 3 linhas e 3 colunas para uma entrada "cm 3 3 3 3", por exemplo. Posso deixar assim mesmo, ou vou ter de reescrevê - lo?

Em resposta à Jorge Taneda

Re: Pergunta sobre tamanho de tabuleiro

por Flavio Coutinho -
Oi Jorge,

você está certo ao dizer que ao alocar um vetor com N posições, as posições são acessadas do índice 0 ao N-1.

Contudo, no exemplo mostrado nas dicas, os parâmetros usados foram 4 4 2 0, ou seja, estamos alocando uma matriz 4x4 (com linhas e colunas indexadas de 0 a 3).

Sobre a possibilidade de a manipulação incorreta de vetores/matrizes ocasionar bugs, isso é verdade sim! Ao acessar uma posição incorreta, você está acessando uma posição da memória que pode conter outras variáveis do seu próprio programa e ao alterar esses dados de forma "acidental" você pode comprometer o funcionamento correto do programa.

No caso de seu programa tentar acessar uma região da memória que pertence a um outro programa, o sistema operacional verifica isso e aí acontecem os famosos "Segmentation Fault".