Ir para conteúdo
Fórum Script Brasil
  • 0

Função malloc no Dev-C


Lucas Couto

Pergunta

Galera estou com um problema. Estou estudando o livro C completo e Total do Herbert Schildt e no capítulo de ponteiros, estou tendo problemas com a função malloc. Ela devolve void, justamente para qualquer tipo de ponteiro manipulá-la. Porém no dev-c um erro de inconsistência ocorre quando declaro um ponteiro diferente de void e chamo malloc com este ponteiro como a seguir:

char *s;

s = malloc(80);

Ele dá o erro de incompatibilidade de tipos. Malloc devolve void e estou a atribuindo a um ponteiro para char. No antigo turbo C isso não acontecia. Já tentei fazer um cast nesta linha mas não deu certo.

Se alguém souber me ajude.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Essa é a melhor forma:

para vetor:

int *v;

int n; //tamanho do vetor

v = (int*) malloc(n * sizeof(int));

para matrizes:

int **matr;

int m; //linhas

int n; //colunas

int i;

matr = (int**) malloc(m * sizeof(int*));

for(i = 0; i<m; i++)

matr = (int *) malloc(n * sizeof(int));

É recomendado você fazer a operação entre a quantidade de inteiro que você quer e o tamanho de um inteiro do seu sistema. Pois dependendo da arquitetura de alguns PCs um int pode ter 2 bytes e em outras 4 bytes, assim você garante a alocação...

Espero ter ajudado =)

Link para o comentário
Compartilhar em outros sites

  • 0
O type-casting foi feito como pointer?

char *s;
s = (char*) malloc(80);

Não me lembro se é assim que faz.

Abraços.

Obrigado! Deu certo!

Essa é a melhor forma:

para vetor:

int *v;

int n; //tamanho do vetor

v = (int*) malloc(n * sizeof(int));

para matrizes:

int **matr;

int m; //linhas

int n; //colunas

int i;

matr = (int**) malloc(m * sizeof(int*));

for(i = 0; i<m; i++)

matr = (int *) malloc(n * sizeof(int));

É recomendado você fazer a operação entre a quantidade de inteiro que você quer e o tamanho de um inteiro do seu sistema. Pois dependendo da arquitetura de alguns PCs um int pode ter 2 bytes e em outras 4 bytes, assim você garante a alocação...

Espero ter ajudado =)

Obrigado a você tmb. Deu certo! Só seculpe a demora estava sem internet

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...