malloc
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
— | malloc [2023/09/12 16:14] (atual) – criada - edição externa 127.0.0.1 | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | A função | ||
+ | <code c> | ||
+ | char ptr; | ||
+ | ptr = malloc (1); | ||
+ | scanf (" | ||
+ | </ | ||
+ | O endereço devolvido por malloc é do tipo " | ||
+ | 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> | ||
+ | # | ||
+ | #include < | ||
+ | |||
+ | |||
+ | | ||
+ | int dia, mes, ano; | ||
+ | } data; | ||
+ | |||
+ | |||
+ | int main(int argc, char *argv[]) | ||
+ | { | ||
+ | |||
+ | data d; | ||
+ | data *datapointer; | ||
+ | |||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | | ||
+ | |||
+ | |||
+ | system(" | ||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | [As aparências enganam: [[sizeof|sizeof]] não é uma função.] | ||
+ | |||
+ | Overhead. Cada invocação de malloc aloca um bloco de bytes consecutivos maior que o solicitado: os bytes adicionais são usados para guardar informações administrativas sobre o bloco de bytes (essas informações permitem que o bloco seja corretamente desalocado, mais tarde, pela função free). | ||
+ | |||
+ | <code c> | ||
+ | |||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | |||
+ | char *IntToChar(int *Number){ | ||
+ | char retorno; | ||
+ | char *ptr = & | ||
+ | ptr = malloc((int)sizeof(Number)); | ||
+ | itoa((int)Number , ptr,10); | ||
+ | return ptr; | ||
+ | } | ||
+ | |||
+ | int main(int argc, char *argv[]) | ||
+ | { | ||
+ | printf(" | ||
+ | system(" | ||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | Teoria retirada do site | ||
+ | http:// |