| |
1-14 C-Sprache, die August 1997 Abbildet 1 Vor dem Führen der Adresse eines vec10 * als Heraus Parameter (oder Empfangen eines vec10 * als die Funktionsrückkehr), tut der Programmierer nichts. Der Klientenstummel teilt zu Ablage für die zurückgebrachte Reihenfolge; für gesprungene Reihenfolgen teilt sie auch einen Puffer von zu die spezifizierte Größe, während für unbegrenzte Reihenfolgen, teilt sie auch einen Puffer zu, der genug groß ist halten, was durch den Gegenstand zurückgebracht wurde. Nach erfolgreicher Rückkehr von der Anforderung, das _ Maximum Mitglied enthält die Größe der zugeteilten Reihe, der _ Puffer Mitglied zeigt auf zugeteilte Ablage und die _ Länge Mitglied enthält Zahl der Werte, die in den _ Puffer zurückgebracht wurden Mitglied. Der Klient ist verantwortlich für das Freigeben der zugeteilten Reihenfolge mit CORBA_free() . Vor dem Führen von &x als inout Parameter, der Programmierer muß den _ Puffer einstellen Mitglied zum Punkt zu einem CORBA_long Reihe von 10 Elementen. Die _ Länge Mitglied muß auf die tatsächliche Zahl Elementen eingestellt werden, um zu übertragen. Nach erfolgreicher Rückkehr von die Anforderung, die _ Länge Mitglied enthält die Zahl Werten, die waren kopiert in den Puffer zeigte auf durch den _ Puffer Mitglied. Wenn mehr Daten sein müssen zurückgegangen als der ursprüngliche Puffer halten, kann das aufgerufene Programm kann die Vorlage freigeben _ Puffer Mitgliedsverwenden CORBA_free() (die Freigabemarkierungsfahne ehrend) und weisen Sie zu _ Puffer zum Punkt zur neuen Ablage. Für gesprungene Reihenfolgen ist es eine Störung zum Einstellen der _ Länge oder _ Maximum Mitglied zu a Wert größer als die spezifizierte Grenze. Reihenfolgenarten stützen den Begriff des Besitzes ihres _ Puffers Mitglieder. Durch die Einstellung einer Freigabemarkierungsfahne in der Reihenfolge, wenn ein Puffer angebracht wird, Programmierer kann steuern Sie Besitz des Gedächtnisses, das auf durch _ Puffer gezeigt wird . Die Position dieser Freigabe Markierungsfahne ist Implementierung-abhängig, also gewähren die folgenden zwei ORB-gelieferten Funktionen für die Einstellung und die Überprüfung der Reihenfolgenfreigabemarkierungsfahne: /*c*/ leeres CORBA_sequence_set_release(void *, CORBA_boolean); CORBA_boolean CORBA_sequence_get_release(void *); CORBA_sequence_set_release kann verwendet werden, den Zustand der Freigabemarkierungsfahne einzustellen. Wenn die Markierungsfahne wird eingestellt, um AUSZURICHTEN besitzt die Reihenfolge effektiv die Ablage, die auf vorbei gezeigt wird _ Puffer ; wenn FALSCH , ist der Programmierer für die Ablage verantwortlich. Wenn z.B. a Reihenfolge wird von einem Betrieb mit seiner Freigabemarkierungsfahne zurückgebracht, die zu FALSCHEM eingestellt wird benennend CORBA_free() auf zurückgebrachter Reihenfolge gibt der Zeiger nicht das Gedächtnis frei gezeigt auf durch _ Puffer . Bevor CORBA_free() benannt wird auf dem _ Puffer Mitglied von eine Reihenfolge direkt, der Programmierer sollte das Freigabemarkierungsfahnenverwenden überprüfen CORBA_sequence_get_release . Wenn es zurückgeht FALSCH , sollte der Programmierer nicht rufen Sie CORBA_free() hervor auf dem _ Puffer Mitglied; das Tun produziert so unbestimmtes Verhalten. Auch einen ungültigen Zeiger oder einen Zeiger zu etwas anders als eine Reihenfolge führend schreiben Sie zu jedem CORBA_sequence_set_release oder CORBA_sequence_get_release produziert unbestimmtes Verhalten. CORBA_sequence_set_release wenn nur vom Schöpfer von a verwendet Sie werden Reihenfolge. Wenn sie nicht einen gegebenen Reihenfolgenfall verlangt wird, dann der Default-Wert von geben Sie Markierungsfahne für diesen Fall ist FALSCH frei . Zwei Reihenfolgenarten sind die gleiche Art wenn ihre Reihenfolgenelementart- und -größenargumente seien Sie identisch. Z.B. |  |
|
| |
|
|