Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Kreator
    Registrato dal
    May 2002
    Messaggi
    278

    [c++] Problema su interi

    Ciao raga.
    Guardate questo pezzo di codice:

    int *ArrayInteri[10];
    ArrayInteri[0] = new int;
    ArrayInteri[0] = (int *)123;
    i = (int)ArrayInteri[0];
    delete ArrayInteri[0];

    Mi da un Access Violation sulla 'delete ArrayInteri[0]'.
    Cosa sbaglio ???


  2. #2

    Re: [c++] Problema su interi

    Originariamente inviato da Kreator
    Ciao raga.
    Guardate questo pezzo di codice:

    int *ArrayInteri[10];
    ArrayInteri[0] = new int;
    *ArrayInteri[0] = 123;
    i = *ArrayInteri[0];
    delete ArrayInteri[0];

    Mi da un Access Violation sulla 'delete ArrayInteri[0]'.
    Cosa sbaglio ???

    cosi', cambia qualcosa?

  3. #3
    Utente di HTML.it L'avatar di Kreator
    Registrato dal
    May 2002
    Messaggi
    278
    perfettissimo adesso funziona.
    Praticamente devo deferenziare con '*'.
    Grazie mille.
    Ciaoo


  4. #4
    Originariamente inviato da Kreator
    perfettissimo adesso funziona.
    Praticamente devo deferenziare con '*'.
    Grazie mille.
    Ciaoo

    prima credo che andavi a cambiare l'indirizzo puntato dal puntatore
    con l'espressione
    ArrayInteri[0] = (int *)123;
    ma cosi' crei un numero 123 che e' fisso e non creato a runtime
    infatti stai dicendo a c
    memorizza 123
    dai l'indirizzo al puntatore
    e fin qui tutto ok
    la delete pero' non puo' ripulire quel codice poiche' fa riferimento
    a una locazione protetta..
    tutto chiaro?

  5. #5
    Utente di HTML.it L'avatar di Kreator
    Registrato dal
    May 2002
    Messaggi
    278
    yes.
    Infatti andavo a cambiare l'indirizzo.
    Sugli interi e' tutto chiaro.
    Pero' sulle stringhe ho bisogno di una illuminazione
    Riproponiamo lo stesso esempio, invece che con gli interi con le stringhe:

    char *buffer;
    char *ArrayInteri[10];
    ArrayCaratteri[0] = new char[100];
    *ArrayCaratteri[0] = "ciao a tutti ...."; <<--- Errore
    buffer = ArrayCaratteri[10];
    delete ArrayCaratteri[0];

    In questo caso mi da un errore sul casting.
    Come lo semplificheresti ?

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    *ArrayCaratteri[0] = "ciao a tutti ...."; <<---

    qui non devi invece deferenziare perche "XXXXX" in c è di tipo:

    const char *

    ovvero è un puntatore (costante) a char, cosi come Array[0] è un char *

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.