Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,768
    meglio passare alla cin del c++ no??
    nn so cosa sia.....


    ciao e buon primo maggio
    Altrettanto a te.

  2. #12
    Originariamente inviato da olly
    nn so cosa sia.....
    codice:
    #include <iostream.h>
    int main(){
    int i;
    cout << prova stampa in c++ << endl;
    cin >> i; //lettura di una var in c++,in c si fà con scanf
    }
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  3. #13
    L'insicurezza è talmente diffusa che le nuove generazioni di processori avranno un flag che servirà a marcare un blocco di memoria come dati o programmi!

    Nell'Athlon 64 esiste già, e il service pack 2 di Windows XP la attiva.

    In questo modo qualunque istruzione di scrittura memoria non potrà MAI sovrascrivere una sezione di codice, perchè verrà bloccata!!!

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  4. #14
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,768
    [QUOTE]per capire, considera come è disposta la memoria di un programma in esecuzione:

    prima vengono i dati, poi il codice eseguibile.

    Io ho letto su una rivista informatica che un programma in runtime può essere distinto in strutture logiche:

    il codice viene generalmente caricato in testa alla memoria e contiene le istruzioni in linguaggio macchina da far eseguire sulla CPU; poi segue l'area in cui sono contenute le variabili del programma dette "statiche", come stringhe di testo, vettori di dimensione ecc.....

    Cosa sono questi vettori di dimensione??

    Poi un'altra cosettina nn mi è chiara raga:

    Quando si effettua una chiamata a funzione si utilizza un' istruzione Assembler di tipo CALL, che serve per stoppare il programma a quel punto e per passare il controllo alla funzione chiamata, dopo aver salvato lo stato corrente e l'indirizzo di ritorno.


    A cosa serve questo indirizzo di ritorno?? Per ritornare alla funzione principale, ma che significa all'atto pratico.....

    Grazie ragazzi.

  5. #15
    Cosa siano i "vettori di dimensione" non saprei proprio dirtelo...

    Mi pare un errore di stampa o qualcosa del genere...

    Invece, il senso dell'indirizzo di ritorno è molto semplice da spiegare: come ben saprai, il processore ha un registro interno che gli dice quale sarà la prossima istruzione da eseguire. Quando tu usi una CALL, ciò che accade è che questo registro viene modificato per puntare non più alla istruzione dopo la CALL, ma invece alla prima istruzione della funzione chiamata; è evidente però che alla fine della funzione non può essere la funzione stessa a sapere a che istruzione deve ritornare, visto che la funzione, per sua stessa natura, deve poter essere chiamata da più parti. Ecco che torna quindi utile l'indirizzo di ritorno che era stato messo da parte prima, visto che ci permette di ritornare esattamente alla istruzine successiva alla CALL che aveva chiamato la funzione.

    Chiaro?

    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  6. #16
    Non concordo su tutte

    strcpy // possibile overflow
    lstrcpy // possibile overflow
    lstrcpyA // possibile overflow
    lstrcpyW // possibile overflow
    lstrcpyn // può lasciare sterminata la stringa di destinazione
    lstrcpynA // può lasciare sterminata la stringa di destinazione
    lstrcpynW // può lasciare sterminata la stringa di destinazione
    wstrcpy // possibile overflow
    strncpy // può lasciare sterminata la stringa di destinazione
    wstrncpy // può lasciare sterminata la stringa di destinazione
    sptrintf // possibile overflow
    swptrinf // possibile overflow
    gets // possibile overflow
    getws // possibile overflow
    strcat // possibile overflow
    lstracat // possibile overflow
    lstrcatW // possibile overflow
    wcscat // possibile overflow
    strncat // può lasciare sterminata la stringa di destinazione
    wstrncat // può lasciare sterminata la stringa di destinazione
    memcpy // Questa è sicura secondo me
    memmove // BOH, è usara rarissimamente (mai usata)

    scanf wscanf // dipende, può lasciare stdin sporco (warning)
    fgets // dipende, può lasciare stdin sporco (warning)

    Memcpy è sicura, anche perkè senò saremmo messi male. E' una funzione importantissima.

    fgets e scanf possono essere usate ma con attenzione.
    Stdio.h è una bella libreria, facile da usare, da "insegnare" ed è portabile al 100%. (a scuola ci insegnano questo tipo di io standard, erroneamente secondo me).
    Il problema è che non ha solo vantaggi, e per una programmazione seria non va bene.
    Per l'IO è meglio usare le SC di basso livello che seppur più difficili da programmare, offrono più controllo su quello che si fa, quindi più sicurezza e prestazioni.

    ADIOS !!

  7. #17
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,768
    Grazie Shores.

    strncpy // può lasciare sterminata la stringa di destinazione
    Che significa può lasciare sterminata......


    scanf wscanf // dipende, può lasciare stdin sporco (warning)

    Che cos'è questo stdin??

    Ciao e grazie a tutti.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.