Aaaaaa
Prof. Edson Luiz Folador
Treinamento Linguagem C; Mizrahi, Victorine Viviane; Makron; Pág. 087 a 102
• Heap • sizeof() • malloc() • calloc() • free()
Referência Bibliográfica
Prof. Edson Luiz Folador
Heap
• Área de memória livre do computador controlada pelo SO.
Tamanho em Bytes de variáveis int num; char ch; sizeof(num) = 2; sizeof(ch) = 1 struct tamanho { int num; char ch; struct tamanho *proximo; } struct tamanho v_tam; sizeof(v_tam) = 3;
• Memória não usada pelo SO • Área disponível para ser utilizada
Referência Bibliográfica
Prof. Edson Luiz Folador
Referência Bibliográfica
Prof. Edson Luiz Folador
Conversão de Tipos num = (int) 20/3; num = (float) 3*2; ptr = (int *) … ???? ptr = (long *) … ??? ptr = (struct tamanho *) …
Alocando um Endereço Memória
Usamos função malloc(tamanho) para alocar um espaço na memória ptr = (int *) malloc( sizeof(int) ); ptr = (long *) malloc( sizeof(long) ); struct tam *ptr; ptr = (struct tam *) malloc( sizeof(struct tam) )
Referência Bibliográfica
Prof. Edson Luiz Folador
Referência Bibliográfica
Prof. Edson Luiz Folador
1
Alocando X Endereços de Memória
Usamos função calloc(quantidade,tamanho) para alocar uma certa quantidade de endereços consecutivos de memória. Prim ptr = (int *) calloc( 100, sizeof(int) );
Reserva 100 espaços consecutivos de memória para o tipo int.
Testando alocação de memória
Precisamos saber se a quantidade de memória que pretendemos alocar esta disponível: struct tam *alocamem() { struct tam *ptr; ptr = (struct tam *) malloc(sizeof( struct(tam) )); if (!ptr) { printf(“Alocação de memória sem sucesso.”); printf(“Memória insuficiente”); exit(); } return(ptr); }
Referência Bibliográfica
ptr = (long *) calloc( 50, sizeof(long) );
Reserva 50 espaços consecutivos de memória para o tipo int.
struct tam *ptr; ptr = (struct tam *) calloc( 100, sizeof(struct tam) )
Reserva 100 espaços