Outra zona de memória aonde a memória não é automática. Neste caso, somos nos que dizemos quanta memória queremos e depois liberamos-la.
Funções para a gestão de memória :
Exemplo usando struct :
**#include <stdlib.h>
Vamos usar estas duas funções : malloc e free**
typedef struct stack {
int N; // Este int ocupa-se do tamanho do array valores
int *valores;
int quantos;
} STACK, SStack;
void initStack (SStack s, int tamanho) {
s->valores = malloc (tamanho * sizeof(int)); // alocar tamanhi * n de bytes que ocupa cada int
s->N = tamanho;
}
int main () {
STACK s1;
int aaa;
initStack (&s1, 10); // iniciar a stack com um array valores de 10 elementos
s1.quantos = 0;
push (3,&s1);
aaa = top (&s1);
free (s1.valores); // Para liberar a memória alocada
return 0;
}