私は非常に大きなCコードを生成するC#プログラムに取り組んでいます。.cファイルとそれに付随するヘッダーファイルを生成します。非常に基本的なレベルでは、プログラムはユーザーからの文字列を受け取り、それをautogen中にヘッダーファイルに配置された他の何千もの文字列と比較します。
ヘッダーファイルには800k行を超えるコードが含まれ、.cファイルには約300k行が含まれています。ご想像のとおり、これらは非常に大きなファイルです。今、私はそのような大きなファイルを持つことは悪いコーディング慣行であることに気づきました。このファイルをより小さなファイルに分割してそのようにコンパイルするのが最善ですが、この2つのファイル構造は、私のプロジェクトが物事の壮大なスキームでどのように使用されるかのために必要であると想定できます。
そのことを念頭に置いて、VisualStudioIDEとコマンドラインでこのプログラムをコンパイルするのに問題があります。実際、それは完全に真実ではありません。どちらの方法でも試してみるたびに正常にコンパイルされているようです(確かに時間がかかります)。しかし、プログラムを実行するようになると、問題が発生します。入力ループに問題なく到達しますが、ユーザー入力を受け入れた後、プログラムは次のエラーでクラッシュします。
Prototype.exeの0x008105f9で未処理の例外:0xC0000005:アクセス違反の書き込み場所0x00000000。
私はこれが問題を引き起こしている私のコードではないとかなり確信しています。デバッグモードで生成されたこのコードのバージョンを実行しましたが、これははるかに小さく、正常に実行されます。唯一の違いは、C#プログラムによってヘッダーファイルに書き込まれた文字列の量です。小さいファイルのサイズは、それぞれ14k行と5k行です。また、IDEでは、フルサイズのコードでコンパイルして実行した後にブレークポイントを使用してデバッグすることはできませんが、小さいコードではできます。
私の質問はこれです:C言語またはVisual Studioコンパイラが上記のエラーを引き起こす単一の大きなファイルで持っている制限または問題はありますか?もしそうなら、私の2ファイル構造を維持しながらこの制限を回避する方法はありますか?プロパティダイアログでヒープとスタックのサイズを4MBに増やしてみましたが、これは役に立ちません。
これはコードを生成して実行するための異常な方法であることに気づきましたが、アドバイスをいただければ幸いです。