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;
}

Alocação de memória em uma matriz

Untitled

Untitled