Curiosità sui puntatori

di il
57 risposte

57 Risposte - Pagina 3

  • Re: Curiosità sui puntatori

    Non capisco l'ostinazione: STUDIA prima! È pieno di testi di ogni tipo sui puntatori.
  • Re: Curiosità sui puntatori

    smalldragon ha scritto:


    infatti se compili il programma, a parte la mancanza dell'altro =, il programma funziona e va in loop eterno.
    Ci sono solo due possibilità:
    - non hai testato il programma
    - lo hai compilato disabilitando tutti i controlli
    Quel codice DEVE dare errore!
  • Re: Curiosità sui puntatori

    Il puntatore ha valore casuale e questo è un errore di programmazione grave in c.

    Poi non è affatto vero che andrà in loop senza fine. Avrai sicuramente un errore.
  • Re: Curiosità sui puntatori

    Quel codice e stato scritto a posta per cercare di far capire il problema!
    ripeto se già conosco le demensioni il problema non sussiste.
    il problema da me "sollevato" sta proprio nel capire quale è la dimensione, in questo caso, della variabile a!
  • Re: Curiosità sui puntatori

    NON si può conoscere. Così va meglio? Ma NON ha importanza alcuna. Chiaro?
  • Re: Curiosità sui puntatori

    nicolap ha scritto:


    Non capisco l'ostinazione: STUDIA prima! È pieno di testi di ogni tipo sui puntatori.
    che dovrei Studiare sui puntatori se
    la maggior parte dei testi/libri sui puntatori
    parla di come si usa un puntatore associazione di variabili hai puntatori etc etc
    aritmetica dei puntatori
    cose bollite fritte più e più volte

    nicolap ha scritto:


    smalldragon ha scritto:


    infatti se compili il programma, a parte la mancanza dell'altro =, il programma funziona e va in loop eterno.
    Ci sono solo due possibilità:
    - non hai testato il programma
    - lo hai compilato disabilitando tutti i controlli
    Quel codice DEVE dare errore!
    certo che va in errore ma dopo un pò di tempo!
    quando il runtime si sente preso per i fondelli perchè è costretto a fare sempre la stessa cosa!
  • Re: Curiosità sui puntatori

    oregon ha scritto:


    NON si può conoscere. Così va meglio? Ma NON ha importanza alcuna. Chiaro?
    ok! se non si può conoscere me ne farò una raggione!
    comunque perchè non avrebbe importanza?
  • Re: Curiosità sui puntatori

    smalldragon ha scritto:


    Weierstrass ha scritto:


    A parte che sarebbe b==0

    a ha dimensioni 4 byte o 8 byte (dipende se l'architettura è a 32 bit o 64) e sta puntando a 0. Stai tentando di scrivere in un'area vietata
    è stata distrazione il non mettere l'altro =!
    comunque a non stà puntando a 0, e di conseguenza non è un area vietata, ma sta puntando ad un indirizzo ben specifico + 0 .... altri incrementi.
    infatti se compili il programma, a parte la mancanza dell'altro =, il programma funziona e va in loop eterno.
    Sta puntando a zero, anzi a zero + zero: è un po' presuntuso da parte tua fare affermazioni senza conoscere bene l'argomento, non credi?
    	
    char b; // 1 byte allocato nello stack
    char * a; // 4 o 8 byte allocati nello stack: in quei 4 byte c'è scritto 0, quindi a punta a zero
    
    a = &b; // adesso in quei quattro byte di a hai scritto l'indirizzo di memoria dello stack dove è allocata b; a punta a b
    
    *a = 'X'; // b = 'X'
    
    a = new char[5]; // il kernel dell'OS ha allocato 5 byte nella memoria heap dove vuole lui (dove ha trovato spazio libero)
    // a e' stato riscritto e punta esattamente a quell'area di memoria
    
    delete[] a; // l'area dello heap dove puntava a è stata liberata
  • Re: Curiosità sui puntatori

    Se programmi correttamente non hai problemi. Tu hai chiesto e devi fidarti di chi ti risponde.
    Ti faccio io una domanda.. in assembly quando hai ebx che utilizzi per puntare ad un dato in memoria e lo incrementi in un loop che succede? Che differenza c'è col tuo loop in c?
  • Re: Curiosità sui puntatori

    smalldragon ha scritto:


    certo che va in errore ma dopo un pò di tempo!
    quando il runtime si sente preso per i fondelli perchè è costretto a fare sempre la stessa cosa!
    TROLL detected!
  • Re: Curiosità sui puntatori

    nicolap ha scritto:


    smalldragon ha scritto:


    certo che va in errore ma dopo un pò di tempo!
    quando il runtime si sente preso per i fondelli perchè è costretto a fare sempre la stessa cosa!
    TROLL detected!
    Non è un troll, è il classico niubbi che compila ed esegue senza debuggare passo passo per rendersi conto di cosa stia accadendo
  • Re: Curiosità sui puntatori

    smalldragon ha scritto:


    certo che va in errore ma dopo un pò di tempo!
    quando il runtime si sente preso per i fondelli perchè è costretto a fare sempre la stessa cosa!
    Ma che cavolo dici??? Beh a questo punto lascio questo thread... e tu lascia stare la programmazione... non fa per te
  • Re: Curiosità sui puntatori

    Weierstrass ha scritto:


    nicolap ha scritto:


    smalldragon ha scritto:


    certo che va in errore ma dopo un pò di tempo!
    quando il runtime si sente preso per i fondelli perchè è costretto a fare sempre la stessa cosa!
    TROLL detected!
    Non è un troll, è il classico niubbi che compila ed esegue senza debuggare passo passo per rendersi conto di cosa stia accadendo
    Il vero problema è l'ignoranza (nel senso di ignorare, non conoscere)... non ha la minima idea di quello che scrive perché non l'ha studiato e/o capito
  • Re: Curiosità sui puntatori

    oregon ha scritto:


    Se programmi correttamente non hai problemi. Tu hai chiesto e devi fidarti di chi ti risponde.
    Ti faccio io una domanda.. in assembly quando hai ebx che utilizzi per puntare ad un dato in memoria e lo incrementi in un loop che succede? Che differenza c'è col tuo loop in c?
    operativamente nessuna ma la differenza e che in assembly,se vuoi fare il controllo della dimensione caso citato puoi sempre confrontare gli indirizzi della variabile in incremento con quella successiva ed evitare travolgimenti.
    mentre in c, se come hai detto tu, il pintatore viene inizializzato ad un valore casuale ciò non lo si può fare e per farlo serve sapere la dimensione!
    un altra differenza tra puntatori c e quelli assembler e quella che in assembler ogni puntatore lo devi associare, per forza, tu ad una variabile o ad un area di memoria mentre in c almeno in fase di creazione non sei tenuto a farlo.
  • Re: Curiosità sui puntatori

    nicolap ha scritto:


    smalldragon ha scritto:


    certo che va in errore ma dopo un pò di tempo!
    quando il runtime si sente preso per i fondelli perchè è costretto a fare sempre la stessa cosa!
    TROLL detected!
    che genio!
    sei riuscito a riconoscerti!
Devi accedere o registrarti per scrivere nel forum
57 risposte