Aqui você vê as diferenças entre duas revisões dessa página.
Próxima revisão | Revisão anterior | ||
malloc [d/mY H:i] jmurray criada |
malloc [d/mY H:i] (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> | ||
Linha 26: | Linha 50: | ||
#include <stdio.h> | #include <stdio.h> | ||
#include <stdlib.h> | #include <stdlib.h> | ||
- | + | ||
+ | |||
char *IntToChar(int *Number){ | char *IntToChar(int *Number){ | ||
- | char *retorno; | + | char retorno; |
- | retorno = malloc((int)sizeof(Number)); | + | char *ptr = &retorno; |
- | itoa((int)Number , retorno,10); | + | ptr = malloc((int)sizeof(Number)); |
- | return retorno; | + | itoa((int)Number , ptr,10); |
+ | return ptr; | ||
} | } | ||
+ | |||
int main(int argc, char *argv[]) | int main(int argc, char *argv[]) | ||
{ | { | ||
Linha 43: | Linha 68: | ||
</code> | </code> | ||
+ | |||
+ | Teoria retirada do site | ||
+ | http://www.ime.usp.br/~pf/algoritmos/aulas/aloca.html |