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
@ProfessorRafaelIvo3 жыл бұрын
Obrigado. Pretendo continuar sim a playlist.
@vitinho98493 жыл бұрын
@@ProfessorRafaelIvo Fico feliz demais S2.
@Gustavooliveira-zl7ru2 жыл бұрын
Excelente sua aula, poderia imprimir o tamanho de Byte, como demostração do efeito da alocação dinâmica.
@ProfessorRafaelIvo2 жыл бұрын
Obrigado. É verdade. Eu pensei nisso só depois. Pensei até em refazer o vídeo, mas não tive mais tempo. Mas espero ter ajudado.
@suellencostasilva69442 жыл бұрын
Olá, expliacação execelente. Seria interessante se deixasse o cod.fonte . Ao fazer passo a passo, sempre da um pequeno erro. Obrigada!
@Leossj1 Жыл бұрын
Olá, você pode me dar algum exemplo útil de Alocação dinâmica?
@gustavohellyanviegascorrea50992 жыл бұрын
Professor, me confirma uma coisa: ao fim da execução da main, se nao usarmos o free(), a memória permanece alocada no computador?
@ProfessorRafaelIvo2 жыл бұрын
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.
@arnailtonbrito21284 жыл бұрын
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
@ProfessorRafaelIvo4 жыл бұрын
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.
@ProfessorRafaelIvo4 жыл бұрын
Existe a função fflush(stdin) no Windows que faz essa mesma coisa. Se for o caso, pode dar certo.
@lubi12314 жыл бұрын
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??
@ProfessorRafaelIvo4 жыл бұрын
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.
@aluzqueacende2 жыл бұрын
Para não. Volta com as aulas
@riskbreakerz14 ай бұрын
A aula é boa, porém o professor trata tudo como já conhecido, ou seja, não é para iniciantes.
@EdersonBairros3 жыл бұрын
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.
@ProfessorRafaelIvo3 жыл бұрын
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.
@EdersonBairros3 жыл бұрын
@@ProfessorRafaelIvo obrigado por aceitar as criticas, e vamos em frente tentando aprender mais e mais. Obg pelo conteúdo.
@lucascostadacruz32153 жыл бұрын
@@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