PB 電子会議室
カテゴリ:ユーザオブジェクト
日付:2001年02月11日 00:38 発信者:ryochan
題名:RE(18):PB6.5: 可変長データのメモリ格納機構
Takaさん、M.Mさん、こんばんは。
Takaさん、M.Mさん:大正解!ピタリ賞です
(賞品はありませんが^^)
動的配列(stringも動的配列の一種です)
については勉強したことがあるので、
重複しますが説明します。
まず、ふつう配列はメモリに隙間無く順番に
並んでいることは、周知の通りです。
なぜなら、配列をポインタで渡す場合は
先頭データのアドレスを渡せば、
型のバイト分ずつ決められたサイズ分シフト
していけば全てのデータが取得できるからです。
(文字列はサイズ情報ではなくnullまでですが)
では、動的配列ってもし要素が追加された場合
その分隣接した次のメモリを確保してデータを
入れてるの?と思われがちですが、
それは大間違いです。
それはもし、次のアドレスのメモリに何か他のデータが
確保されていたらどうなりますか?
順番にデータを格納することができなくなってしまう
という事態になってしまうからです。
それで、お二人方のおっしゃった方法を採っているのです。
指定されたサイズを確保できるメモリ空間を
メモリマネージャが探して、割り当てるのです。
|←動的配列→||←他の領域・・・・
■■■■■■■■□□□□□□□□□□□□・・・
動的配列に新たな要素が追加された場合
|←配列廃墟→||←他の領域→|←追加動的配列→|
××××××××・・・ ・・・■■■■■■■■■■
これは、他の言語も動的配列
を使用する場合はこの方法を採ります。
PBは自動でこれらのことを行っているのです。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows98
DBMS Oracle SQL*Net 8
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.