>198
まるっきり質問と違う答えになるが。
そもそも GlobalAlloc(), GlobalLock() 等を直接使うのは効率が悪い。
代わりに HeapAlloc() なんかもあるけど、特に理由がなければ Win32 上だろうと、
malloc() なり new なりを使うべき。
C++ なら new だね。

後、さらにけちけちするなら、1個1個要素を確保せずに配列で確保してしまい
さらにそいつをリストとして構成して空きリスト要素として用意しておく、というのもあり。

LIST *p = new LIST[N];
for(int i=0; i<N-1; i++) p[i].next = p+i+1;
p[N-1].next = NULL;

この場合、解放用に確保した時の先頭アドレスを保存しておく必要があるんでその処理は必要。

ただ、勉強のために線形リストを作ってるんじゃなければ C++ なら STL 使うのが一番楽だと思う。