私は移植のためにopenglを使うためにcで構築されたゲームを移植しています。いくつかの理由で、ゲームのmalloc機能が機能しなくなるまで、すべてうまくいっていました。関数mallocはNULLを返しますが、最初の10回だけです
私はこれに対する答えを探しています。私が見つけた唯一の事は、mallocがNULLを返すことです。数バイトの単純な構造を作成する非常に単純なmallocです。
私はいくつかの試行を行い、ループ内でコマンドを書きました。そして私の驚きは、それが最初の10回失敗したことでしたが、その後はコマンドが働き、ゲームが始まりました。その構造は問題なく何度も作成されています。
私はそれをそのまま残すと言いますが、何か間違っていると確信しており、他のシステムでは正しく動作しない可能性があります。だからこそ私はどんな種類の問題を抱えているのか、それを避ける理由と方法を尋ねたいのです。環境はそれほどフレンドリーではなく、デバッグツールが不足しているので、できるだけ多くの詳細を理解しています。
ありがとうございました。
編集: コードは単純です。
ObjectBase* newcoin;
newcoin= (ObjectBase*)calloc(1,sizeof(ObjectBase));
ObjectBaseの構造は非常に小さいですが、 200バイト以下。
ハードウェアは、4 GBまたはメモリを搭載したWindows 7ベースのコンピュータです。この場合でも、エラーは次のようになります。
Visual C++ CRT: Not enough memory to complete call to strerror
以前はうまくいきました。 その他の問題。私はディスクからファイルを読み込むときに同じ問題を抱えています。それは約10〜15回起こり、正しく動作します。 問題は常に発生します。アプリケーションを再起動するたびにクラッシュします。
重要なコードを追加してください。そういう意味で私たちは判断できません。 – DonCallisto
あなたの環境(ハードウェア、OS、コンパイラ)は何ですか?いくつかのコードを投稿できますか?問題は正確に再現可能ですか?可能性は低いですが、実行中のメモリの量が実際に変化している可能性があります。 –
投稿コード – Dan