文字列のハッシュ値ここまでで説明した事例は、電話番号をキーとするものであり、余りを求めるだけといったような簡単な計算で、ハッシュ値が求められた。一般的には文字列といったような名前から、ハッシュ値が欲しいことが普通だろう。ハッシュ値は、簡単な計算で、見た目デタラメな値が求まればいい。(ただしく言えば、ハッシュ値の出現確率が極力一様であること)。規則性が解らない値として、文字であれば文字コードが考えられる。偏りの少ない値を取り出すことができる。;}文字列順で異なる値となるように前述のハッシュ関数は、”ABC”さんと”CBA”さんでは、同じハッシュ値が求まってしまう。文字列順で異なる値が求まるように改良してみる。;}共有のあるデータの取扱の問題リスト構造で集合計算の和集合を求める処理を考える。終わると下の図のようなデータ構造となる。listdel(a)を行おうとすると、bの先のデータは廃棄済みなのに、list_del(c)の実行時に、その領域を触ろうとして異常が発生する。一部とデータを共有しているために発生する。この解決方法として簡単な方法では、参照カウンタ法が用いられる。参照カウンタ法では、データを参照するポインタの数をデータと共に保存する。データの中にポインタ数を覚える参照カウンタを設け、データを生成した時に1とする。処理の中で共有が発生すると、参照カウンタをカウントアップする。データを捨てる際には、参照カウンタをカウントダウンし、0になったら本当にそのデータを消す。}}ただし、参照カウンタ法は、循環リストではカウンタが0にならないので、取扱いが苦手。参照カウンタ法が用いられている事例をあげよ。ガベージコレクタでは、循環リストの発生するようなデータで、共有が発生するような場合には、どのようにデータを管理すれば良いだろうか?最も簡単な方法は、処理が終わっても、使い終わったメモリを返却しない、方法である。このままでは、メモリを使い切ってしまう。そこで、廃棄処理をしないまま、ゴミだらけになってしまったメモリ空間を再利用するのが、ガベージコレクタである。ガベージコレクタは、貸し出すメモリ空間が無くなった時に起動され、すべてのメモリ空間に、「不要」の目印をつける。(unmark処理)変数に代入されているデータが参照している先のデータは「使用中」の目印をつける。(mark処理)その後、「不要」の目印がついている領域は、だれも使っていないので回収する。(sweep処理)この方式は、マークアンドスイープ法と呼ばれる。このようなガベージコレクタが動く場合は、他の処理ができず処理が中断されるので、コンピュータの操作性という点では問題となる。最近のプログラミング言語では、参照カウンタとガベージコレクタを取り混ぜた方式でメモリ管理をする機能が組み込まれている。このようなシステムでは、局所変数のような生成され関数終了といったすぐに不要となる領域は、ガベージコレクタで管理し、大域変数のような長期間保管するデータはガベージコレクタで管理される。