rdias 0 Posted April 2, 2011 Report Share Posted April 2, 2011 Boas, Estou a desenvolver um jogo em que tenho uma matriz de inteiros que é alocada dinamicamente e com o decorrer do jogo vou precisar de alocar mais linhas e colunas a essa matriz. A minha pergunta é: Para aumentar essa matriz, tenho de alocar uma nova matriz com o tamanho pretendido e libertar a anterior (copiando os devidos valores primeiro) ou basta alocar mais campos na mesma matriz ? (ou outra solução) Link to post Share on other sites
Baderous 31 Posted April 2, 2011 Report Share Posted April 2, 2011 Penso que podes usar a função realloc para resolver isso. http://pubs.opengroup.org/onlinepubs/007908799/xsh/realloc.html Link to post Share on other sites
rdias 0 Posted April 2, 2011 Author Report Share Posted April 2, 2011 Humm.. não conhecia, mas parece-me bem. Vou experimentar. Gracias Link to post Share on other sites
skinie18 1 Posted April 6, 2011 Report Share Posted April 6, 2011 ou crias uma variavel dinamica com malloc ISEP - Engenharia Informática @skinie18 & fb/skinie18 Link to post Share on other sites
rdias 0 Posted April 9, 2011 Author Report Share Posted April 9, 2011 A matriz é criada com o malloc mas depois de criada é necessário aumentar o numero de linhas e colunas (mantendo a informação lá guardada). Já tentei usar o realloc mas ainda não consegui EDIT: Uma solução possível seria alocar uma nova matriz com o novo tamanho, copiar os valores da anterior, e libertar a anterior. Mas se houvesse uma maneira melhor de fazer isso era preferível. Link to post Share on other sites
pedrosorio 4 Posted April 9, 2011 Report Share Posted April 9, 2011 A matriz é criada com o malloc mas depois de criada é necessário aumentar o numero de linhas e colunas (mantendo a informação lá guardada). Já tentei usar o realloc mas ainda não consegui EDIT: Uma solução possível seria alocar uma nova matriz com o novo tamanho, copiar os valores da anterior, e libertar a anterior. Mas se houvesse uma maneira melhor de fazer isso era preferível. Deves usar realloc como foi dito. Para cada malloc que fizeste, tens que fazer um realloc. Não respondo a dúvidas por mensagem. Link to post Share on other sites
rdias 0 Posted April 9, 2011 Author Report Share Posted April 9, 2011 Já consegui!! Estava-me a dar um erro de violaçao de acesso á mem. porque estava a fazer realloc ás linhas e colunas. Solução: - Para as linhas que faltavam fiz malloc - Para cada linha fiz realloc ás colunas Obrigado Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now