Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ free(3F7768) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

malloc(3)

MALLOC(3F7768)  —  NEWS-OS Programmer’s Manual

名称

malloc, free, falloc − メモリの割り当て

形式

subroutine malloc (size, addr)
integer size, addr

subroutine free (addr)
integer addr

subroutine falloc (nelem, elsize, clean, basevec, addr, offset)
integer nelem, elsize, clean, addr, offset

解説

malloc、 falloc および free は、 汎用メモリの割り当てパッケージを提供します。 malloc は、 偶数バイト目から始まる、 size バイト以上のブロックのアドレスを addr に返します。

falloc は、 サイズ elsize の要素 nelem 個からなる配列に空間を割り当て、 addr にそのブロックのアドレスを返します。 clean が 1 の場合、 このブロックはゼロになります。 そして、記憶域を bsaevec(offset+1)...basevec(offset+elem) のようにアドレス付けできるように、 インデックスを offset に返します。 falloc は、 引数から計算されるよりもメモリを多く取ります。 それは、 アドレス計算されたオブジェクトが全てブロック内に納まるように 考えられているからです。

free の引数は、 あらかじめ malloc または falloc で割り当てられたブロックのアドレスです。 この空間は、 別の割り当てに利用できるようになりますが、 その内容はそのまま残されます。 falloc で割り当てられたブロックを解放する場合、 free を呼び出す時には addr を 使い、 basevec(offset+1) を使ってはいけません。 すでに、 malloc または falloc で割り当てられた空間が過大な場合、 あるいは、 free にいい加減な値を渡した場合は、異常終了します。

診断

利用できるメモリがない場合、 あるいはブロックの境界外にデータを 格納して該当領域が信頼できなくなった場合、 malloc と falloc は addr に 0 をセットします。 次の例に、メモリを獲得し、 それをサブプログラムで使う方法を示します。

       integer addr, work(1), offset
         ...
      call falloc ( n, 4, 0, work, addr, offset )
      do 10 i = 1, n
      work(offset+i) = ...
10    continue

次の例では、 ディメンション情報を入力し、 2 個の配列と 2 個のベクトルに空間を割り当て、 サブルーチン doit を呼び出し計算します。

       integer addr, dummy(1), offs
      read ∗, k, l, m
      indm1   = 1
      indm2   = indm1 + k∗l
      indm3   = indm2 + l∗m
      indsym  = indm3 + k∗m
      lsym = n∗(n+1)/2
      indv  = indsym + lsym
      indtot = indv + m
      call falloc ( indtot, 4, 0, dummy, addr, offs )
      call doit( dummy(indm1+offs), dummy(indm2+offs),
     .           dummy(indm3+offs), dummy(indsym+offs),
     .           dummy(indv +offs), m, n, lsym )
      end
      subroutine doit( arr1, arr2, arr3, vsym, vec, m, n, lsym )
      real arr1(k,l), arr2(l,m), arr3(k,m), vsym(lsym), v2(m)
         ...

関連ファイル

/usr/lib/libU7768.a

関連事項

malloc(3)

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026