Programação em C - 14 - Alocação Dinâmica

แชร์
ฝัง
  • เผยแพร่เมื่อ 3 ธ.ค. 2024

ความคิดเห็น • 27

  • @enzodanielmarinho6696
    @enzodanielmarinho6696 7 หลายเดือนก่อน +1

    Caraca que qualidade, muito boa a aula

  • @janinedefranca7240
    @janinedefranca7240 2 ปีที่แล้ว +2

    Simplesmente perfeito!

  • @jorgesimoes4444
    @jorgesimoes4444 2 ปีที่แล้ว +4

    Só uma coisa: Parabens professor, obrigado !

  • @alexandresousa2857
    @alexandresousa2857 3 ปีที่แล้ว +1

    salvou muito!!!!

  • @Gustavooliveira-zl7ru
    @Gustavooliveira-zl7ru 2 ปีที่แล้ว +2

    Excelente sua aula, poderia imprimir o tamanho de Byte, como demostração do efeito da alocação dinâmica.

    • @ProfessorRafaelIvo
      @ProfessorRafaelIvo  2 ปีที่แล้ว +1

      Obrigado. É verdade. Eu pensei nisso só depois. Pensei até em refazer o vídeo, mas não tive mais tempo. Mas espero ter ajudado.

  • @JoaoOliveira-od8ht
    @JoaoOliveira-od8ht 2 ปีที่แล้ว

    Ótima aula

  • @vitinho9849
    @vitinho9849 3 ปีที่แล้ว +4

    Mano, muito bom, aulas incríveis!!!! Porque vc não continua com um vídeo de arquivos?! Seria ótimo.
    Abraços e DEUS te abençoe.S2

    • @ProfessorRafaelIvo
      @ProfessorRafaelIvo  3 ปีที่แล้ว +1

      Obrigado. Pretendo continuar sim a playlist.

    • @vitinho9849
      @vitinho9849 3 ปีที่แล้ว

      @@ProfessorRafaelIvo Fico feliz demais S2.

  • @suellencostasilva6944
    @suellencostasilva6944 2 ปีที่แล้ว +1

    Olá, expliacação execelente. Seria interessante se deixasse o cod.fonte . Ao fazer passo a passo, sempre da um pequeno erro. Obrigada!

  • @Henrique-sg9wm
    @Henrique-sg9wm 3 ปีที่แล้ว +1

    otima aula professor, vai me salvar na facul haha

  • @Leossj1
    @Leossj1 ปีที่แล้ว

    Olá, você pode me dar algum exemplo útil de Alocação dinâmica?

  • @gustavohellyanviegascorrea5099
    @gustavohellyanviegascorrea5099 2 ปีที่แล้ว

    Professor, me confirma uma coisa: ao fim da execução da main, se nao usarmos o free(), a memória permanece alocada no computador?

    • @ProfessorRafaelIvo
      @ProfessorRafaelIvo  2 ปีที่แล้ว +1

      Não. Quando a função main acaba, o programa finaliza. Nesse momento, qualquer memória alocada pelo programa é desalocada pelo sistema operacional. Mas é uma boa prática acostumar a sempre liberar a memória.

  • @arnailtonbrito2128
    @arnailtonbrito2128 4 ปีที่แล้ว +1

    Quando eu coloco _fpurge(stdin); nao consigo rodar o programa;
    Quando o faço: //_fpurge(stdin); não consigo inseir o 'Nome 0' só a partir 'Nome 1':
    Quantidade de strings: 5
    Nome 0: Nome 1: goku
    Nome 2: brasil
    Nome 3: amazonas
    Nome 4: manaus
    goku
    brasil
    amazonas
    manaus

    • @ProfessorRafaelIvo
      @ProfessorRafaelIvo  4 ปีที่แล้ว

      Tem certeza de que colocou antes de cada leitura de string? O grande problema é o "
      " vindo da leitura anterior, que deve ser removido de do arquivo "stdin". Você está lendo um número antes da primeira string e o enter desse número pode estar servindo de entrada pra sua primeira string. Se está usando fpurge (com dois underline), então está no Linux, certo? Isso é importante, porque não cheguei a testar se existe essa função no Windows e seu funcionamento.

    • @ProfessorRafaelIvo
      @ProfessorRafaelIvo  4 ปีที่แล้ว

      Existe a função fflush(stdin) no Windows que faz essa mesma coisa. Se for o caso, pode dar certo.

  • @lubi1231
    @lubi1231 3 ปีที่แล้ว +1

    Olá! Somente a alocação dinâmica precisa-se liberar a memória com o comando free, ou na alocação estática comumente usada também precisa??

    • @ProfessorRafaelIvo
      @ProfessorRafaelIvo  3 ปีที่แล้ว +2

      Como eu digo no inicio do vídeo, quando um programa executa, ele possui 4 áreas de memória distintas alocadas para ele: uma pro código de máquina, uma pros dados estáticos (variáveis globais ou variáveis declaradas com a palavra reservada static. Essas variáveis nunca são desalocadas durante a execução e mantém o seu valor), uma pra pilha de execução e outra pra heap. Todas as variáveis locais que você declarar, estão sujeitas a alocação dinâmica diferente, uma alocação dinâmica feita pelo Sistema Operacional. Você não controla quando ela é alocada e desalocada. Ela é alocada quando a função é chamada e desalocada quando a função termina (por isso, variáveis locais perdem seu conteúdo depois que uma função termina). Logo, variáveis locais não precisam de free. A heap é a área de memória onde o programador pode alocar memória através do malloc e que ficará alocada até que o programador desaloque com free. Essa memória é independente da pilha, então ela permanece alocada até que o programa execute free. Entende a diferença? Só se usa free, com memória alocada na heap e só se aloca memória na heap usando malloc. As variáveis locais normais não podem ser desalocadas com free porque elas estão em outro lugar na memória, onde o comando free não possui controle.

  • @aluzqueacende
    @aluzqueacende 2 ปีที่แล้ว

    Para não. Volta com as aulas

  • @riskbreakerz1
    @riskbreakerz1 2 หลายเดือนก่อน

    A aula é boa, porém o professor trata tudo como já conhecido, ou seja, não é para iniciantes.

  • @EdersonBairros
    @EdersonBairros 3 ปีที่แล้ว +2

    eu dei deslike pq tentei acompanhar a aula e ir refazendo todo o codigo passo a passo mas como existe muitos cortes e a aula está acelerada, assim sendo impossível de acompanhar, o código aqui não rodou, deu mais de 20 erros, gostaria que aceitasse como um feed back positivo para melhorar mais as video aulas, leve em consideração criar exemplos mais simples, intuitivos e direto pois se eu estou aqui como tantos outros alunos é porque estamos com dificuldade neste assunto de alocação dinâmica, não crie algo muito complexo.

    • @ProfessorRafaelIvo
      @ProfessorRafaelIvo  3 ปีที่แล้ว +2

      Eu verifiquei o vídeo e realmente tem um erro no primeiro código que escrevi (o de alocar um vetor de n números inteiros). O primeiro erro eu comento na edição, do cast (int*) necessário antes de malloc. O segundo erro está no if, porque esqueci de fechar o parêntese.
      Estou sempre tentando melhorar, mas é inevitável, eu acho, alguns erros passarem.

    • @EdersonBairros
      @EdersonBairros 3 ปีที่แล้ว

      @@ProfessorRafaelIvo obrigado por aceitar as criticas, e vamos em frente tentando aprender mais e mais. Obg pelo conteúdo.

    • @lucascostadacruz3215
      @lucascostadacruz3215 3 ปีที่แล้ว

      @@ProfessorRafaelIvo boa dia pode me ajudar no ponteiro e alocação dinâmica
      Um determinado paciente permaneceu internado em um hospital em um período de tempo. Durante sua internação vários procedimentos foram efetuados. Para cada procedimento, as seguintes informações foram armazenadas no sistema:
      • Nome do procedimento;
      • Valor do procedimento;
      • Tempo de execução do procedimento (em dias);
      #include
      #include
      float pacienteinfo (float *V, int procedimentos) {
      int i;
      float soma_procedimentos=0;
      for ( i=0; i< procedimentos; i++) {
      soma_procedimentos = soma_procedimentos + V[i];
      }
      return soma_procedimentos / procedimentos;
      }
      int main () {
      int i, n;
      float *info;
      printf("Qual é o nome do paciente ? ");
      scanf("%d", &n);
      info = (float*)malloc(n*sizeof(float) );
      if ( info == NULL ) {
      printf ("Não foi possível alocar a área desejada
      ");
      exit(1);
      }
      printf("*** Digitação dos dados da informação ***

      ");
      for (i=0; i