Informática, perguntado por GuillermoTrue, 5 meses atrás

( Programação )

Alguém por favor poderia me ajudar a entender melhor ponteiros, malloc, calloc, realloc e sizeof?

Se possível, me dê exemplos em C ou C++.

Soluções para a tarefa

Respondido por PedroviskHMA
1

Olá! Qual é a dúvida em específico?


GuillermoTrue: Como funciona na prática,...
GuillermoTrue: Em qual situação eu poderia usar
PedroviskHMA: Olha, as funções malloc, calloc e realloc, permitem você manipular uma região de memória chamada heap. Quando você declara uma variável na função main, por exemplo, essa variável está sendo alocada em uma região de memória chamada stack.
PedroviskHMA: A stack é muito menor do que a heap em tamanho (enquanto a stack tem em geral uns 10MB, a heap tem todo o resto de memória sobrando da sua RAM) e também é uma região de memória temporária, ou seja, a memória alocada morre depois que a função acaba de ser executada. A heap também permite ser realocada, você pode aumentar o tamanho do espaço alocado dinamicamente.
PedroviskHMA: Então, concluindo: a heap é geralmente usada quando é preciso alocar algo que vai ocupar muito espaço, que pode crescer dinamicamente ou quando é preciso que permita o controle de quando essa memória irá morrer. (Ou pode ser os três ao mesmo tempo!).
GuillermoTrue: Entendi, e em questão dos ponteiros e o sizeof?
PedroviskHMA: Ponterios são variáveis que possuem a capacidade de apontar para uma certa região de memória (sem os ponteiros, o malloc, calloc e realloc não funcionam!)
PedroviskHMA: Já o sizeof é um operador do C para exibir a quantidade de memória de um tipo, variável, structs, unions.
PedroviskHMA: sizeof int //4
sizeof double //8

E lembre-se: o sizeof não é uma função!
Perguntas interessantes