Aqui você vê as diferenças entre duas revisões dessa página.
malloc [2011/07/29 10:09] jmurray |
malloc [2011/09/09 07:02] (atual) jmurray |
||
---|---|---|---|
Linha 1: | Linha 1: | ||
A função malloc (abreviatura de memory allocation) aloca um bloco de bytes consecutivos na memória do computador e devolve o endereço desse bloco. O número de bytes é especificado no argumento da função. No seguinte fragmento de código, malloc aloca 1 byte: | A função malloc (abreviatura de memory allocation) aloca um bloco de bytes consecutivos na memória do computador e devolve o endereço desse bloco. O número de bytes é especificado no argumento da função. No seguinte fragmento de código, malloc aloca 1 byte: | ||
<code c> | <code c> | ||
- | char *ptr; | + | char ptr; |
ptr = malloc (1); | ptr = malloc (1); | ||
scanf ("%c", ptr); | scanf ("%c", ptr); | ||
Linha 9: | Linha 9: | ||
Para alocar um tipo-de-dado que ocupa vários bytes, é preciso recorrer ao operador sizeof, que diz quantos bytes o tipo especificado tem: | Para alocar um tipo-de-dado que ocupa vários bytes, é preciso recorrer ao operador sizeof, que diz quantos bytes o tipo especificado tem: | ||
<code c> | <code c> | ||
- | typedef struct { | + | #include <stdio.h> |
- | int dia, mes, ano; | + | #include <stdlib.h> |
- | } data; | + | |
- | data *d; | + | |
- | d = malloc (sizeof (data)); | + | typedef struct { |
- | d->dia = 31; d->mes = 12; d->ano = 2008; | + | int dia, mes, ano; |
+ | } data; | ||
+ | |||
+ | |||
+ | int main(int argc, char *argv[]) | ||
+ | { | ||
+ | |||
+ | data d; | ||
+ | data *datapointer; | ||
+ | |||
+ | datapointer = &d; | ||
+ | |||
+ | datapointer = malloc (sizeof (data)); | ||
+ | datapointer->dia = 31; | ||
+ | datapointer->mes = 12; | ||
+ | datapointer->ano = 2008; | ||
+ | |||
+ | |||
+ | printf("%d/%d%/%d\n",datapointer->dia,datapointer->mes,datapointer->ano); | ||
+ | |||
+ | |||
+ | system("PAUSE"); | ||
+ | return 0; | ||
+ | } | ||
</code> | </code> |