Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Strings e char pointers #2

Open
chalkos opened this issue Mar 8, 2012 · 2 comments
Open

Strings e char pointers #2

chalkos opened this issue Mar 8, 2012 · 2 comments

Comments

@chalkos
Copy link
Collaborator

chalkos commented Mar 8, 2012

Já na estrutura está lá "char *", depois tu metes lá um valor, mas ninguém te garante que o espaço alocado para esse char * é suficiente para a tua string... como é que se assegura que o espaço para a string é reservado?

nunca percebi essa cena...

@danielcarvalhopt
Copy link
Owner

Assim de repente temos 2 hipóteses. Declarar o tamanho do array na estrutura de dados não permitindo nomes de localidades para além daquele limite ou então fazer uma função que leia um máximo de 1000 caracteres do teclado, calcula o tamanho do array e faz-se um malloc(sizeof((n+1)*char) para guardar o nome no char * nome.

@chalkos
Copy link
Collaborator Author

chalkos commented Mar 9, 2012

declarar tamanho fixo: é limitador se o nome tiver muitas letras, usa memória a mais porque vamos alocar imagine-se 100 caracteres e ter localizações que têm nomes com 10 caracteres... por outro lado é mais rápido de criar/modificar/destruir.

ajustar ao tamanho: é óptimo em termos de memória, pois só vamos ocupar mesmo o que precisamos. mas exige mais do processador quando for a criar/modificar/substituir.

O malloc parece-me melhor. se definires tamanho fixo tens sempre a limitação e tens sempre a memória ocupada com lixo que sobrou da string. com o malloc é mais demorado criar/modificar/substituir, mas fica impec em termos de memória.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants