メモリの割り当てと割り当て解除の効果。何らかの目的でメモリを割り当てると、割り当てを解除するまで割り当てられたままになります。割り当てられている間は、他の目的には使用できません。割り当てを解除する理由は、そのメモリを他の用途に使用できるようにするためです。
なぜこれが重要なのか。これは、プログラムが時間の経過とともに新しいメモリチャンクを割り当て続ける場合に重要になります。不要になったときにメモリの割り当てを解除しないと、プログラムでのメモリの使用が増え、増え続け、最終的にはオペレーティングシステムが使用できるメモリのプールを使い果たしてしまう可能性があります。
この例では実際の害はありません。あなたの特定の例では、割り当て解除をスキップしても(おそらく)害はありません。一つには、プログラムはその後すぐに終了するので、プログラムはそのメモリをそれ以上使用しません。別のこととして、他の人が述べているように、Cの典型的な実装では、プログラムは終了時にすべてのメモリを返します。
ただし、プログラムが他の何かのためにメモリを必要とする可能性がある場合、またはプログラムが終了時にメモリをオペレーティングシステムに戻さない場合は、不要になったときにメモリの割り当てを解除することをお勧めします。
ポインタではなく、メモリの割り当てが解除されます。厳密に言えば、その例ではポインタの割り当てが解除されません。ポインタが指すメモリの割り当てを解除します。ポインタはまだそこにあり、実際には、現在割り当て解除されているメモリを指しています。これは、ポインタがまだ所有しているメモリを指しているかのように、誤ってポインタを使い続けた場合に、無限のデバッグの喜びにつながる可能性があります。