Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 12 su 12

Discussione: [C++] Array dinamico?

  1. #11
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    444
    so che funziona e so anche che non dovrebbe strano
    *********************************
    Andrea
    *********************************

  2. #12
    Originariamente inviato da nik600
    codice:
      int a;
       int b[a];
       b[0]=1;
       b[1]=2;
       b[2]=3;
    è giusto che funzioni, ma il problema è quando cerchi di assegnare un valore a

    b[x] quando x è un valore > di a al momento della creazione di b[a]

    potresti ottenere un errore di memoria se vai a scrivere su cose che non sono tue, o, ancora peggio, potresti andare a cambiare il valore di alcune altre variabili all'interno del tuo programma
    In teoria è questo il modo per definire un array statico.
    codice:
       const int a = 2;
       int b[a];
       b[0]=1;
       b[1]=2;
       b[2]=3;
    Oppure :
    codice:
       #define a 2
       int b[a]
       b[0]=1;
       b[1]=2;
       b[2]=3;
    Il fatto di poter superare, con le assegnazioni, il limite dell' array
    è solo un tipico errore di programmazione in C/C++...
    In fin dei conti la variabile 'b' è solo il riferimento al
    primo elemento dell' array b[].
    I compilatori non eseguono nessun controllo di superamento di
    questo limite.
    Questa pratica di superare i limiti è utilizzata per
    numerosi 'exploit' che si basano sul 'buffer owerflow',
    ricordate il worm 'Sasser' (ad esempio) che con un espediente
    simile riusciva a sovrascrivere lo stack e iniettare codice
    maligno nell' area di memoria interssata dal processo che è
    in esecuzione come system.

    Quindi il Gcc in questo frangente:
    codice:
       int a;
       inb b[a];
    Credo che di fatto allochi memoria per un array ad un solo elemento, equivalente a :
    codice:
       int b[1];
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

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.