1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.
  2. Informação: Pela 0:30 desta Sexta-feira (9 de Dezembro, 23:30 de Quinta-feira nos Açores) o Fórum e restantes sites da ZWAME vão estar offline para manutenção durante cerca de 1h30.
    Se necessário faremos actualizações via Twitter e Facebook.
    Remover anúncio

[C] Definir o endereço.

Discussão em 'Programação' iniciada por jonsmau, 24 de Novembro de 2007. (Respostas: 9; Visualizações: 788)

  1. Boas,

    como fazer para guardar um valor num endereco definido por mim?



    por exemplo:
    ------------------------------
    /* defino o endereco que quero usar, em sistema decimal, p.e. o nº 1525 */
    int endereco=1525;
    int *ap;

    /* o valor do apontador ap fica o endereco definido em cima */
    ap=(void*)endereco;

    /* o valor do endereco por mim escolhido fica o numero 1*/
    *ap=1;
    ------------------------------

    o que é certo é que isto assim nao funciona, dá problema na expressao: *ap=1;
     
  2. compila mas dá segmentation fault !!!
     
  3. O que se passa é que tu não podes escolher os endereços onde queres guardar os dados. Neste caso isso acontece porque não podes escrever no endereço 1525.
     
  4. [knap]

    [knap] Power Member

    ap = &endereco;

    Com esse teu código e com esta correcção ficas com endereco = 1, é isso que queres?
     
  5. sapropel

    sapropel Power Member

    porque tas a tentar aceder a um endereço na memoria a que não tens direito. o proprio SO proibe isso.
     
  6. ap = &endereco;

    eu nao quero escrever no endereco da variavel endereco, quero escrever num endereco qql.


    ok pela explicacao.


    como posso saber que enderecos posso usar? ha forma?
     
  7. [knap]

    [knap] Power Member

    Só podes aceder a endereços correspondentes ao espaço de memória que reservas com a função malloc().
     
  8. mj2p

    mj2p I'm Cool Cuz I Fold

    Infelizmente, ou talvez não, tu não podes simplesmente escolher o endereço de memória em que queres guardar os teus dados. Isto quem decide é o SO.

    Talvez em LINUX, se quisesses partir muita pedra, poderias alterar o código fonte e colocá-lo de maneira a que pudesses escolher os endereços... :lol::lol:

    Vá, cumps
     
  9. greatbunzinni

    greatbunzinni Power Member

    Há ainda outro problema. Os endereços de memória que aparecem no programa são o resultado duma abstracção e apenas relativos ao próprio programa. Eles não tem qualquer relação com os endereços acessíveis por outras aplicações, nem tão pouco permitem aceder à memória usada por outras aplicações.
     
  10. mj2p

    mj2p I'm Cool Cuz I Fold

    Exactamente. Para cada aplicação, é como que se reservasse um certo "compartimento" da memória. Por isso é impossível colocar dados num endereço por nós especificado.

    Seria bom. Os níveis de fragmentação da memória baixariam de certeza... :lol:

    Vá, cumps
     

Partilhar esta Página