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

[Duvida/C] Problema com Malloc e Biblioteca


GabrielCardelli

Pergunta

Bom galera eu vendo um tutorial sobre Alocação

No tutorial diz que Malloc pertence a "alloc.h"

Porem quando eu include ela.. Diz que não existe no diretorio!!

O programa roda normal mais não sei si ele ta alocando memória!!

Abaixo o codigo alguém pode me diz se esta correto? E qual biblioteca ela esta? eu uso Devc++

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main ()
{
     int *p,tnums,count;
     printf (" Quantos numeros você deseja digitar>: ");
     scanf ("%d",&tnums);
     p = (int *) malloc(tnums);
     
     for (count=0;count<tnums;count++)
     {
         printf (" Digite um numero: ");
         scanf ("%d",&p[count]);
     }
     system ("cls");
     for (count=0;count<tnums;count++)
     {
         printf (" %d ", p[count]);
     }
     getche();
     free(p);
     return (0);
}

Vlw

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

A função malloc() é uma das que são default pro gcc (imagino que seja esse). Não é obrigatório informar no fonte em qual header está o protótipo. Ademais, se o EXE foi produzido sem erro, é claro que está tudo ok. :)

Mas, se precisar informar um diretório para o gcc procurar pelos headers, use o switch -I<path>.

Editado por Maligno
Link para o comentário
Compartilhar em outros sites

  • 0
Vários problemas com alocação dinâmica, eu resolvi utilizado malloc(sizeof(variável)). Não seria o caso?

No caso dele não. Mas especificar o tamanho correto do tipo que será armazenado é uma prática comum e mais acertada. O OP esqueceu disso. Mas ele lembrou da coerção do tipo do ponteiro devolvido. Aí fica garantida que a aritmética de ponteiros será feita corretamente.

p = (int*)malloc(sizeof(int)*tnums);

Link para o comentário
Compartilhar em outros sites

  • 0

O operador sizeof() (não é função - é operador) permite saber o tamanho (em bytes) de um determinado tipo de dado, seja um tipo nativo ou criado pelo programador (uma estruct, por exemplo). A função malloc() exige saber a quantidade de bytes que será alocada. Para saber qual a quantidade exata o correto é usar esse operador. Quanto ao retorno, sempre será um ponteiro para char. Mas há compiladores que exigem uma coerção (ou cast), mesmo que seja para o próprio ponteiro default (padrão ANSI).

Sinteticamente é isso. Mas o legal é você procurar o help da linguagem pra conhecer os detalhes. Se possível um help que considere o padrão ANSI. Já que C é uma linguagem normatizada, conhecer o padrão ajuda a desenvolver software portável e/ou que funcione em qualquer compilador.

Link para o comentário
Compartilhar em outros sites

  • 0

Em tempo:

Se quiser dar uma olhada na norma, tenho pra download no meu site, além de alguns livros. Da página principal dá pra ir à seção C++, onde também tenho a norma de C++ e mais alguns livros e tutoriais. Tudo em inglês. :)

C:

http://pub.buzinello.com/index.php?d=./c/tutorials/

Home:

http://pub.buzinello.com/index.php

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...