Boas… tenho algumas duvidas acerca da funcionalidade de malloc, sei que é uma alocaçao dinamica na memoria mas nao compreendo bem o seu funcionamento.
Malloc permite me por exemplo guardar um programa feito por mim na memoria e depois procura lo?
Boas… tenho algumas duvidas acerca da funcionalidade de malloc, sei que é uma alocaçao dinamica na memoria mas nao compreendo bem o seu funcionamento.
Malloc permite me por exemplo guardar um programa feito por mim na memoria e depois procura lo?
Não. Ele faz alocação de memória RAM. Ou seja, de memória volátil.
Quando vc faz:
int x* = (int*) malloc(12);
Você está alocando 12 bytes, e passando o valor do ponteiro para o primeiro byte para x.
Como esse ponteiro é entendido como um int*, a leitura será feita de 4 em 4 bytes (um int tem 4 bytes).
Ou seja:
x[0] --> Dá o valor inteiro do primeiro byte
x[1] --> Dá o valor inteiro do segundo byte
x[2] --> Dá o valor inteiro do terceiro byte
Quando vc cria variáveis sem o malloc, elas são criadas apenas na pilha, e tem escopo local, na função onde foram declaradas. Com malloc, a memória é reservada no heap, que e seu conteúdo ficará lá até que um free seja dado.
hum tou a perceber, não é isso que pretendo. Quero fazer um jogo tipo palavras cruzadas e quero guardar a matriz de maneira que o user procure a matriz atraves da linha de comandos para que depois o programa avaliar o que o user da como resultado para avaliar se ta certo ou nao. Tenho a ligeira sensaçao de que era a linguagem C que permitia ‘endereçar’ especificamente para depois ir la buscar. Saberia dizer me alguma dica por favor?
Antigamente (acho que no tempo em que você nem era nascido), em alguns programas em C (tipicamente jogos), costumava-se declarar uma struct gigante contendo todas as variáveis globais do programa (tipicamente níveis e pontos) para que ela fosse salva em um único arquivo.
Não é preciso dizer que isso era usado tipicamente para jogos, em que você não tinha atualizações, service packs e outras coisas que poderiam deixar os dados de versões anteriores do programa completamente incompatíveis com versões mais recentes.
Um jogo em que isso era feito era o Doom.
Dica: não faça isso. É um modo muito antigo de pensar (salvar as variáveis globais do jeito que estão em um arquivo). Só era feito em jogos, por causa dessas coisas que eu listei.
humm isso nao sabia, obrigada! acho que atraves de manipulaçao de ficheiros, li um post sobre um ‘fopen’ que penso que vai servir.
agradeço pelo tempo que dispensaram, cumps
Bom - uma forma simples de salvar informações em arquivos é em arquivos-texto.
Se for em C, você pode usar os métodos fopen/fclose/fgets/fputs . Dá um pouco de trabalho mas nada que não possa ser feito com várias linhas de código.
Se você estiver criando um programa que só vai rodar em Windows e as informações podem ser guardadas como strings, pode usar arquivos .ini e usar as APIs WritePrivateProfileString / GetPrivateProfileString ( veja http://msdn.microsoft.com/en-us/library/ms725501(VS.85).aspx e http://msdn.microsoft.com/en-us/library/ms724353(v=VS.85).aspx ).
Se quiser usar XML e C++, pode usar a biblioteca Xerces ( http://xerces.apache.org/xerces-c/ ). Sempre é bom saber usar a Xerces, ela pode ser muito útil para você.
hum descobri varias coisas atraves dos links, agradeço novamente.
Decidi aplicar os metodos fopen (: