_malloca を呼び出すたびに _freea を呼び出すことが常に重要です。
_malloca は _alloca に似ていますが、保護のために追加のセキュリティ チェックと機能強化が追加されています。その結果、_malloca がスタックではなくヒープに割り当てられる可能性があります。これが発生し、_freea を呼び出さないと、メモリ リークが発生します。
デバッグ モードでは、_malloca は常にヒープに割り当てられるため、解放する必要があります。
しきい値がどのように機能するか、および _alloca の代わりに _malloca が存在する理由の詳細については、_ALLOCA_S_THRESHOLD を検索してください。
編集:
人がヒープに割り当てるだけで、スマートポインターなどを使用することを示唆するコメントがありました.
_malloca が提供するスタック割り当てには利点があるため、これを行う理由があります。_alloca も同じように機能しますが、スタック オーバーフローやその他の問題を引き起こす可能性が高く、残念ながら適切な例外を提供することはなく、むしろプロセスを破壊する傾向があります。_malloca はこの点ではるかに安全であり、ユーザーを保護しますが、_malloca がスタックではなくヒープに割り当てることを選択する可能性があるため (リリース モードではほとんどありません)、_freea を使用してメモリを解放する必要があるという代償があります。
メモリを解放する必要がないようにすることが唯一の目標である場合は、メンバーがスコープ外になったときにメモリの解放を処理するスマート ポインターを使用することをお勧めします。これにより、ヒープにメモリが割り当てられますが、安全であり、メモリを解放する必要がなくなります。ただし、これは C++ でのみ機能します。単純な古い C を使用している場合、このアプローチは機能しません。
他の理由でスタックに割り当てようとしている場合 (スタック割り当ては非常に高速であるため、通常はパフォーマンスのため)、_malloca を使用し、値に対して _freea を呼び出す必要があるという事実を受け入れることをお勧めします。