Zugriffsverletzung



  • Besser ist es aber, man schreibt sich für sowas ein Makro.

    #define CHAR_SIZE (1+sizeof(char)-1-sizeof(char)+1*1*sizeof(char)/1/sizeof(char))
    int x[10000*CHAR_SIZE];
    


  • würde es mit nem const int machen, da #define keine typprüfung macht, aber ansonsten ok



  • groovemaster schrieb:

    Besser ist es aber, man schreibt sich für sowas ein Makro.

    #define CHAR_SIZE (1+sizeof(char)-1-sizeof(char)+1*1*sizeof(char)/1/sizeof(char))
    int x[10000*CHAR_SIZE];
    

    Sehr umsichtiges define: Du solltest aber zusätzlich sicherstellen, daß sizeof(char) ungleich 0 ( Ziffer null == 1-1 ) ist! 🙂 (Divison durch null ist verboten )
    Außerdem bist DU dann maschinen und plattformunabahängig :p



  • groovemaster schrieb:

    Besser ist es aber, man schreibt sich für sowas ein Makro.

    #define CHAR_SIZE (1+sizeof(char)-1-sizeof(char)+1*1*sizeof(char)/1/sizeof(char))
    int x[10000*CHAR_SIZE];
    

    Poste sowas lieber nicht. Die Unerfahrenen kopieren sich das weil sie denken du meinst das ernst.



  • groovemaster schrieb:

    #define CHAR_SIZE (1+sizeof(char)-1-sizeof(char)+1*1*sizeof(char)/1/sizeof(char))
    int x[10000*CHAR_SIZE];
    

    schon ne nette idee.
    ich finde es aber eleganzer, wenn man es so ansetzt:

    #define CHAR_SIZE (sizeof(long)?sizeof(long int(&)[10])/sizeof(unsigned long(&)[10]):sizeof(short int(&)[10])/sizeof(unsigned short(&)[10]))
    

    das hat zwei riesige vorteile:
    a) mit dem ?: wird erstmal gefragt, ob sizeof(long) überhaupt ungleich 0 ist, und falls sizeof(long) tatsächlich 0 ist, wird die gleiche berechnung mit short gemacht. das ist sehr sicher, da es zur zeit keinen compiler auf dem markt gibt, wo sizeof(long) und sizeof(short) beide 0 sein.
    b) ich benutze nicht wie du fahrlässigerweise sizeof(char), um doch nur sizeof(char) auszurechnen, um einem zirkelschluss zu entgehen.



  • lol

    MfG SideWinder



  • Darf ich auch mal?

    #define CHAR_SIZE 1
    


  • FireFlow schrieb:

    Darf ich auch mal?

    #define CHAR_SIZE 1
    

    das ergibt gar keinen sinn, weil:
    a) man dann immer 1 statt CHAR_SIZE schreiben würde und CHAR_SIZE unnötig wäre.
    b) du dich auf eine zusage beziehst, die bei fehlerhaften compiler nicht immer verläßlich sein muß.



  • OK volkard, hast mich überzeugt. Deine Methode ist tatsächlich besser, und zudem eleganter.



  • ROFL 😃


Anmelden zum Antworten