Beiträge von hal

    Zitat von apis

    aber wer sagt dass os9.x kein thema mehr sein kann?

    Ok, ich sprech da aus der Perspekive des Softwareentwicklers. Leute, die jetzt immer noch Mac OS 9 verwenden, haben garantiert kein Interesse daran, ihre Softwarekonfiguration irgendwie zu verändern.
    Soll ja auch Leute geben, die immer noch ihren Amiga verwenden.

    Zitat

    ich bin nach wie vor zufrieden damit,bin allerdings auch
    kein "profi" grafiker oder ähnl.

    Die s.g. Profigrafiker waren die letzten Macleute, die geswitcht sind. Quark hat mit der Portierung von XPress erst angefangen wie schon alle anderen fertig waren, dadurch haben sie alle außer die ärgsten Änderungsfeinde an Indesign verloren.

    Zitat

    ps:seit wann gibts im ghetto internet&computer:confused::devil:

    Ach, Telekabel gibts fast überall in Wien ;). Und mit einem Balkenschloss bleibt der Computer auch dort, wo er hingehört.

    das originalposting ist schon eineinhalb jahre alt, ich glaub nicht dass sie dieses problem immer noch hat :)

    mittlerweile ist mac os 9 auch nicht mehr wirklich ein thema...

    Die Einrückung ist da fehlleitend. Richtig isses so:

    Code
    .....
    if (x<1) 
      x= x+1;
    x= x-1;
    x= x+2;
    summe = summe*n;
    usw... ;
    else { // <-- FEHLER: else ohne if
    .....

    was du machen kannst ist, alles mit Beistrichen zu machen:

    Code
    if(x<1) x = x+1, x = x-1, x = x+2, summe = summe*n;
    else {...}

    das macht aber niemand (außer als 3. Argument beim for()).

    EDIT: Es gibt allerdings Sprachen, wo die Blockstruktur durch die Einrückung definiert wird (Python und Haskell fallen mir dazu ein), aber bei diesen gibts auch keine geschweiften Klammern.

    Zitat von freakjan

    ehrlich gesagt, hab auch nicht ganz verstanden, was hier steht :shinner:
    Hab versucht im Internet nach den Begriffen, wie Classe, Instanz usw. zu suchen aber bin trotzdem net weiter gekommen :ahhh: :confused: :distur: :shinner:

    Wenn man mitm Programmieren anfängt sollte man nicht gleich objektorientierte Programmierung machen :)

    Und wenn man mit objektorientierter Programmierung anfängt, sollte man nicht mit den Begriffsdefinitionen anfangen, sondern mit der Idee dahinter :)

    Zitat von phudy

    außerdem würde sich apple selbst ins fleisch schneiden, wenn sie auch hier ihre "hardware-sicherheitsmechanismen" einsetzen um einen bootloader zu verhindern -meine 0,2€.

    Apples Tradition ist, dass es ihnen völlig egal ist (abgesehen von Garantiegeschichten), was man mit ihren Computern anstellt. Es gibt sogar einen offiziellen Apple-Reseller, der die Macs mit Linux vorinstalliert ausliefert.

    Apple hat groß angekündigt, dass diese Macs nicht mehr mit OpenFirmware ausgeliefert werden sollen (was sehr schade ist find ich), vermutlich werden sie wohl auf EFI setzen. Das bedeutet, dass die Linux-Leute erst einen neuen Bootloader schreiben müssten, was sicher net von heut auf morgen passieren würde, aber wär sicher nur eine Frage der Zeit. Wenn Apple da einen netten grafischen loader gleich mitliefern würde wär das natürlich ein großes Plus (yaboot ist ja eine Beleidigung aller Mac-User).

    Zitat von phudy

    - apple meint zu andere OS auf mac hardware "wir werden nicht mithelfen, aber auch nichts dagegen tun" --> sprich: ein rechner mit allem was man braucht (macosx, linux, windows)

    Vergiss nicht, dass Apple ein Softwarepatent auf einen Bootloader hat, der dem User die Auswahl zwischen den drei von dir genannten Betriebssystemen erlaubt.
    Ob sie das einbauen ist natürlich wieder eine andere Sache.

    Du verwechselst den Speicherplatz, den der pointer selber beansprucht mit dem, auf den er zeigt. Ein Pointer ist eine Datenstruktur, die üblicherweise 4 Byte groß ist (auf 16bit-Systemen 2 Byte, auf 64bit-Systemen 8 Byte, etc). Auch dafür muss man Speicher reservieren.

    Nochmal: Stell dir vor da würde kein Pointer stehen, sondern ein int. Dann verwirrt es dich vielleicht weniger :)

    Zitat von sommeralex

    kann es vielleicht sein, dass ich nur den "speicher meines pointers" über free loswerden muss? also free(&pointer) ???

    nur wenn du den Speicher deines Pointers vorher alloziert hast mit malloc, also sowas in der Art wie &pointer = malloc(sizeof(&pointer));. Das geht aber nur in C++ mit seinen Referenzen.

    Zitat von sommeralex

    ich möchte nun zusätzlich noch eine liste, aus struct y (und struct y enthält struct x zeiger, diese zeigen alle auf die vorher schon erstelle liste bzw. objekte meiner liste)

    muss ich diese liste über ein malloc initiieren? oder nicht? die zeiger, auf die dieses struct y zeigen, sind alle schon über ein malloc erzeugt worden.

    Generell ist der Inhalt des Speicherbereichs völlig egal. free schaut sich nicht an, was da drinnen liegt (und für free selber ist es ja nur ein Haufen von Bytes ohne Bedeutung).

    Zitat

    wenn ich nun struct y "free" befehle, wirkt sich dass auch auf meine liste x aus?

    Gar nicht.

    Zitat

    wenn ich die struct y liste über malloc initiiert habe, muss ich sie ja mit free loswerden.

    Richtig.

    Zitat

    vielleicht muss ich aber gar nicht diese liste über ein malloc deklarieren, oder?

    Naja, irgendwoher muss der Speicher kommen, wo du das hinspeicherst. Speziell in C++ gibts da viele andere Methoden, aber in C greift man bei sowas eigentlich immer auf malloc zurück.

    Zitat von sommeralex

    wenn ein struct X auf andere structs Y zeigt, und ich dieses struct X mit free(struct X) anschreibe, werden dann auch meine structs Y "gelöscht"/free - obwohl noch andere zeiger auf diese zeigen?

    Generell wird nichts gelöscht, was du ihm nicht sagst. Dir kanns auch passieren, dass du Speicher reserviert hast, auf den du keinen Pointer mehr hast, das ist dann ein memory leak.
    C und C++ haben per default keine garbage collection wie Java, Haskell und andere Sprachen!

    Am besten ist es, wenn du Pointer als normale Variablen ansiehst, die eine Speicheradresse als Inhalt haben (was ja auch wirklich der Fall ist). malloc() reserviert einen Block im Speicher und gibt die Anfangsadresse zurück. Irgendwann musst du genau diese Anfangsadresse wieder free() übergeben, dann wird der komplette Block wieder freigegeben. Mehr Magie passiert nicht (aus der Sicht des Programmierers).

    Zitat

    aber wie lösche ich nun "nur" die zeiger? (ohne die objekte zu löschen, auf die sie zeigen)

    meinzeiger = NULL;

    was äquivalent ist zu meinevariable = 0; bei Integer-Typen.

    Zitat von sommeralex

    vielen dank einmal für die antworten. es wundert mich nur, dass ich obwohl ich free(head_alarm) schreibe, "danach" immer noch auf head_alarm zugreifen kann!

    Bei kleineren Allozierungen reserviert malloc meistens gleich einen größeren Block, und returnt aus diesem Block heraus Speicherplätze wenn noch mehr Platz ist drinnen. Dadurch wird der overhead kleiner gehalten.
    Dieses Verhalten ist allerdings nicht genauer spezifiziert, und man kann sich daher nicht drauf verlassen (weder zwischen OS, noch zwischen Computern, nichtmal zwischen Mondphasen am gleichen Computer).