PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
14575 01/02/13 13:48:36 RE(22):PB6.5: PBの動的配列の扱い By ryochan
14567 01/02/13 12:12:35 RE(21):PB6.5: PBの動的配列の扱い By M.M
14566 01/02/13 12:07:30 RE(20):PB6.5: PBの動的配列の扱い By ryochan
14562 01/02/11 01:13:54 RE(19):PB6.5: 可変長データのメモリ格納機構(2) By ryochan
14561 01/02/11 00:38:01 RE(18):PB6.5: 可変長データのメモリ格納機構 By ryochan
14558 01/02/09 22:02:51 RE(17):PB6.5: String型変数のメモリアロケートについて By M.M
14557 01/02/09 20:54:32 RE(16):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By Taka
14546 01/02/09 15:22:03 RE(15):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By ryochan
14535 01/02/09 02:29:55 RE(14):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By Taka
14532 01/02/08 21:01:07 RE(13):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By ryochan
14530 01/02/08 16:34:56 RE(12):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By MIYAHARA
14526 01/02/08 13:50:18 RE(11):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By ryochan
14525 01/02/08 17:58:54 RE(10):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By ryochan
14524 01/02/08 13:05:17 RE(9):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By ryochan
14523 01/02/08 13:03:51 RE(8):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By ryochan
14522 01/02/08 12:45:26 RE(7):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By MIYAHARA
14519 01/02/08 00:02:23 RE(6):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By Taka
14518 01/02/07 23:51:17 RE(5):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By Taka
14516 01/02/07 19:14:54 RE(4):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By ryochan
14508 01/02/07 12:33:02 RE(3):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By TKS
14506 01/02/07 02:16:07 RE(2):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By Taka
14490 01/02/06 09:22:09 RE(1):PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By aqua
14482 01/02/05 12:30:35 PB6.5: 関数の引数に、値(VALUE)としてDW型を指定した場合に、オリジナルが変更されるのは? By TKS

カテゴリ:ユーザオブジェクト
日付:2001年02月11日 01:13 発信者:ryochan
題名:RE(19):PB6.5: 可変長データのメモリ格納機構(2)

続き
PBの様に自動でない言語は面倒くさそうですが
逆に現在のサイズより少ない
領域を確保してそれだけのデータを
転送させれば減らすことも可能なのです。
PBの場合、それはないので
動的配列では自動で転送(コピー+解放)
を行うことを利用して、
1.一時データを別の動的配列に待避する、
2.減らしたい動的配列=別の空の動的配列にして
  (空のデータをコピーする)
  減らしたい動的配列は空データとして
  別の領域に移される。現在のデータは解放される。
3.待機させた、元のデータを減らしたい結果の要素分
  格納する
方法がありますね。

メモリマネージャの機構にもよりますが
実際のメモリ(これまでメモリと言ってたのは仮想メモリです)
には確保した領域の両端に確保領域サイズ情報を
格納させるらしいです。
そうすると領域が開放されたときにもし隣接し合った領域が
空いていればそれらを足して一つのメモリの
空き空間とさせます。
メモリマネージャにこれだけ空いているよ
と知らせるためです。
その方法で、メモリの断片的な領域確保を
防ぐことができます。

ちなみに、構造体(クラスも)も順番に
データが並んでいますが
(でなければポインタで渡せませんよね)、
メンバに可変長データがある場合
Cでは可変長データのメンバについては
可変長データのポインタを
メンバとさせています。
なお、
Cのmalloc(新たに確保)、
realloc(再確保)、
calloc(新配列領域確保して新配列の要素はすべて0にする)、 
はきちんと新たなアドレスを
返してくれるので
アドレスが変わっても心配は
ありません。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows98
DBMS Oracle SQL*Net 8
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.