Beiträge von Ringding

    1. File System Check (hast wahrscheinlich eh schon gemacht)
    2. rpm -V für jedes installierte Paket (Liste kriegst mit rpm -qa)

    Die Ausgabe vom rpm -V musst du dann schon händisch durchschauen, aber allzuviel Arbeit ist das nicht. "Interessant" wären Files, bei denen sich die MD5 sum geändert hat (5)

    Richtig, solange sich der allozierte Speicher in Grenzen hält, ist das sehr brauchbar. Für große Speichermengen empfiehlt sich halt dann doch ein größerer Addressraum, sprich 64 Bit-Maschinen.

    Btw, der Boehm GC wird z.B. von GCJ (GNU Java Compiler), GNU Objective C, Mozilla und Mono verwendet und funktioniert dort offenbar ausgezeichnet.

    Du, ich weiß, was eine Java VM macht, ich arbeite nämlich an einer im Rahmen meiner Diplomarbeit. Und der Boehm GC, ein sehr weit verbreiteter Garbage Collector, tut genau das, was ich beschrieben habe, nämlich den Speicher scannen. Außerdem haben die Pointer auf einer 32bit-Maschine natürlich 32 Bit und nicht 64.

    Kann schon vorkommen, dass der GC was überlässt, was eigentlich gelöscht werden sollte. Kommt einfach drauf an, wie er den Memory scannt. Wenn er einfach alle 32 bit-Worte liest und als Pointer betrachtet, kann's ja schon mal zufällig passieren, dass ein solcher in einen Speicherbereich reinzeigt, der alloziert ist. V.a. wenn das Programm ein paar hundert MB braucht, ist das leicht möglich. Auf 64 bit-Maschinen passiert's klarerweise viel seltener, weil da schon einiges an Glück dazugehört, um mit einem wild zusammengewürfelten Pointer genau einen gültigen Speicherbereich zu treffen.

    Das ist kein Stil, das ist ein Zustand!

    Also jedenfalls funktioniert der Borland C++ Compiler genauso wie jeder andere auch. Du machst nur unterschiedliche Dinge in den beiden. BC hast du wahrscheinlich so verwendet: bcc32 main.cpp. Wie du oben gesehen hast, geht das mit VC++ auch. VC++ verwendest du hingegen von der IDE aus, wo du alle .cpp Files in ein Projekt gegeben hast. Daher werden alle übersetzt und am Ende zusammengelinkt -> Fehler. Würdest du das mit dem BC machen, würde er sich genauso beschweren. Wenn du es also weiterhin mit VC++ in der IDE compilieren willst, dann nimm alle .cpp Files bis auf das main.cpp aus dem Projekt raus, dann müsste es gehen.

    Wieso es mit deiner Methode nicht geht, haben wir jetzt schon dreimal geschrieben. Weil du mehrere Object-Files zusammenlinkst, deren Methoden sich teilweise überschneiden.

    Deine #include-Struktur ist völlig schwachsinnig, sorry bitte es ist wirklich so.

    Jedes .cpp File soll "sein" .h File inkludieren. Optional noch andere .h Files dazu.
    Jedes .h File kann optional andere .h Files inkludieren.
    Jedes .h File soll Include Guards haben (das hast du eh)
    Ein .h File darf NIE ein .cpp File inkludieren.

    Wie du hier siehst, geht es problemlos.

    E:\Documents and Settings\Administrator\Desktop\test>cl /GX main.cpp
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
    Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

    main.cpp
    Microsoft (R) Incremental Linker Version 6.00.8447
    Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

    /out:main.exe
    main.obj

    E:\Documents and Settings\Administrator\Desktop\test>main
    9
    8
    E:\Documents and Settings\Administrator\Desktop\test>

    Chris: Kreativ - und wahrscheinlich besser, als man es je mit einer auf Annahmen basierenden Nachprogrammierung von NTFS erreichen würde. Ich wollte es schon seit Wochen ausprobieren, hoffentlich komm ich bald mal dazu.

    Wenn du in zwei Übersetzungseinheiten eine Variable (oder Funktion) mit dem gleichen Namen anlegst und sie nicht extern oder static deklarierst, dann kollidieren die beiden beim Linken. So ist das nun mal in C.

    Wenn du nun ein .cpp File inkludierst, werden alle Variablen, die darin angelegt werden, auch in der inkludierenden Übersetzungseinheit angelegt -> Clash.

    Was das Inkludieren von .cpp Files betrifft, verhalten sich eigentlich alle Compiler gleich (eine Ausnahme ist vielleicht Visual Age von IBM, aber das gibt's glaub ich schon lang nicht mehr). Wenn du mit VC++ auch nur das eine File ins Projekt geben würdest, das du mit dem BCC compilierst, dann würde auch das gleiche rauskommen. Umgekehrt würde sich der Borland Linker auch beschweren, wenn du jedes .cpp File compilieren würdest und danach alles zusammenlinken wolltest.