D4n1l0d Postado Julho 20, 2009 Denunciar Share Postado Julho 20, 2009 Olá!Estou criando um simples joguinho de batalha naval e como estou aprendendo c++ decidi criar uma classe para o mapa do jogoainda estou no começo, na alocação dinamica, entretanto eu pego um erro de segmentation fault ( usando ubuntu 9.xx)observem o codigo e onde ocorre o erro ( descoberto debuggando)typedef struct { char x; char y; } bn_sdot; class bn_mapa { protected: int lin; int col; public: bn_mapa(); int getLin(); int getCol(); void drawmask(); FILE *arquivo; char **mapa; char **mascara; bn_sdot ponteiro; }; // Construtor padrão, constroi um mapa de 10x15 bn_mapa::bn_mapa() { lin = 10; col = 15; mapa = (char **) memaloc(lin,col); mascara = (char **) memaloc(lin,col); erasememory( mapa[0],0,lin,col); //o erro ocorre aqui, mas de acordo com o disassembler, antes de chamar a funcao erasememory( mascara[0],'~',lin,col); } char **memaloc(int lin, int col) { int i; char *tmp; char **mtmp; mtmp = (char **) malloc(sizeof(char *)*lin); tmp = (char *) malloc(sizeof(char)*lin*col); for(i=0;i<lin;i++) mtmp[i] = tmp + i*col; } void erasememory(char *area, char character, int lin, int col) { memset(area,character,col*lin); }se voces souberem um jeito mais facil pra que eu possa alocar arrays de tamanho dinamico, eu ficaria muito feliz! agradeço desde já[]'sDanilo Rodrigues Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 D4n1l0d Postado Julho 21, 2009 Autor Denunciar Share Postado Julho 21, 2009 afferro ridículona rotina de alocação dinamica esqueci de retornar o **charchar **memaloc(int lin, int col) { int i; char *tmp; char **mtmp; mtmp = (char **) malloc(sizeof(char *)*lin); tmp = (char *) malloc(sizeof(char)*lin*col); for(i=0;i<lin;i++) mtmp[i] = tmp + i*col; return mtmp; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Julho 22, 2009 Denunciar Share Postado Julho 22, 2009 Acontece.De qualquer forma, você tem mesmo que alocar a memória dinamicamente? Na batalha naval, o mapa não possui um tamanho estático?Não esqueça que você também pode usar templates para especificar o tamanho, e aí utilizar a stack.Recomendo o uso da stack para diminuir as chances de memory leak e segmentation fault's.Na função memaloc você está desalocando a memória da variável "tmp"? Se não, você tem um memory leak.Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
D4n1l0d
Olá!
Estou criando um simples joguinho de batalha naval e como estou aprendendo c++ decidi criar uma classe para o mapa do jogo
ainda estou no começo, na alocação dinamica, entretanto eu pego um erro de segmentation fault ( usando ubuntu 9.xx)
observem o codigo e onde ocorre o erro ( descoberto debuggando)
se voces souberem um jeito mais facil pra que eu possa alocar arrays de tamanho dinamico, eu ficaria muito feliz!
agradeço desde já
[]'s
Danilo Rodrigues
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.