ポインタを無くした弊害の事例 ― 2008年06月23日 13時10分13秒
厳しい環境などではガーベッジコレクションの時期や量などで、問題になるとも聞くが、別に C や C++ でも、ガーベッジコレクションを用いた実装もあるので、メモリの扱い自体が問題ではない。
オブジェクトを用いた高級言語として Java を扱うと、実際にメモリアクセスを必要とする事は無い。しかし、低レベルの操作を行なおうとすると色々と不便な目にあう。例えば、I/O stream 等がその典型的な例だろう。InputStream には二つの read がある。int read(byte[] b) と int read(byte[] b, int off, int len) がそれだ。
C 言語にはこのような二つの read など必要無い。C 言語では、read に読み出すバイト列のアドレスを渡す。それに引き替え、Java では、バイト列のアドレスを直接渡すことが出来ないので、int read(byte[] b, int off, int len) のインターフェイスを用いて、何処に読み出すのかを指定する必要がある。どのみち、必要な変数の数は変わらないが、インターフェスが繁雑になる。
最近のコメント