malloc?

V

vimal2010

Guest
O que é malloc? porque nós usá-los? whats sua importância na programação C?

 
malloc (alocação de memória) é usado para alocar dinamicamente memória em tempo de execução.Possíveis usos para essa função são:
Leia os registros de comprimento desconhecido.
Ler um número desconhecido de registros de dados.

A maneira mais simples de memória para código de reserva é algo como:

main ()
(
char string [1000];

strcpy (string, "algum texto");
)

O exemplo acima tem dois problemas:

Se o dado for inferior a 1000 bytes estamos a perder a memória.
Se os dados é maior do que 1000 bytes, o programa vai falhar.
O 1000 bytes são reservados pensado a vida do programa.Se este era um programa de longa duração que raramente usaram a memória, ele voltaria a ser um desperdício.
malloc nos permite atribuir exatamente a quantidade correta de memória e com o uso do livre apenas durante o tempo que for necessário.-------------------------------------------------- ------------------------------

Biblioteca: stdlib.h

Protótipo: void * malloc (size_t size);

Sintaxe: String char *;

String = (char *) malloc (1000);-------------------------------------------------- ------------------------------

Olhando para a sintaxe do exemplo acima, 1000 bytes são reservados e os pontos ponteiro seqüência de caracteres para o primeiro byte.Os 1000 bytes não são inicializados por malloc.Se a memória não estiver disponível, um ponteiro NULL é retornado.Por favor note, o elenco elenco é necessário para retornar um ponteiro do tipo correto.

leomecma

 
http://www.cs.cf.ac.uk/Dave/C/node11.html # SECTION001110000000000000000

 
main () é um erro.Uso int main (void).

Você também pode alterar o tamanho do espaço alocado com realloc ().

Para evitar a colisão devido ao programa strcpy () da cadeia de comprimento desconhecido, usar strncpy ().

O char (* cast) não é necessário, e geralmente não é recomendado.

 
Echo47 Acho que o uso de strcpy () ou strncpy () não são a questão, apenas a idéia de usar malloc é importante.Sobre main (), void (principal) depende do compilador (alguns dão um aviso sem void) e int main () é usado geralmente para C e alguns compiladores introduzir automaticamente int main (int argc, char * argv [] ) no projeto.Eu acho que não é o problema também.Sobre o elenco eu o retirei exemplo de um livro ...mas concordo que desnecessary mas não vejo problemas de usar, acho que o autor usá-lo para limpar ....

Pode explicar-me porque elenco principal void () e pode ser perigoso?

leomecma

 
>>> main () é um erro.Uso int main (void).

Acho que não há grandes dif btw há duas declarações e depende do compilador ..
quando sempre main (), está escrito que é entendido que não há argumentos e, portanto, main () é desnecessário ..
e main () e int main void (), aqui se você estiver usando o segundo um
é preciso mencionar a afirmação: "return 0;" no final do programa ..
outra coisa que pode haver possibilidade de voltar inteiro someother ..assim o seu melhor usar
main () em todos os casos
atenciosamente

 
O padrão ANSI C descreve apenas duas formas principais de:
int main () (/ * ...* /)
int main (int argc, char * argv []) (/ * ...* /)

Eis o que diz o FAQ sobre comp.lang.c main ():
http://www.eskimo.com/ ~ scs/C-faq/q11.12.html
http://www.eskimo.com/ ~ scs/C-faq/q11.14.html
http://www.eskimo.com/ ~ scs/C-faq/q11.15.html

Opa, eu não quis dizer que é errado para lançar malloc do valor de retorno.É correto, mas redundantes:
http://www.eskimo.com/ ~ scs/C-faq/q7.7.html
A maioria dos programadores não usá-lo mais, porque só aumenta a confusão.

 

Welcome to EDABoard.com

Sponsor

Back
Top