0

プロジェクトで私の Malloc が失敗しています。Malloc は関数の 1 つを介して数回実行されますが、メモリ不足のために失敗します。

VC++ でヒープ サイズを増やそうとしていますが、上記の件名のエラーが表示されます。

誰かがこれで何が悪いのか教えてもらえますか?

Windows Server 2003 R2 Enterprise エディション VC++ 98 エディションを使用しています。

検索を試みましたが、/HEAP OPTION の使用方法について決定的なものは得られませんでした。数値は MB で表示する必要がありますか?

message_t* Allocate_momory(MsgType_t msgType, UInt16 dataLength)
{
    // TO DO: Allocate memenory and return the pointer
    message_t* mes_t;
    mes_t = (message_t*) malloc(sizeof (message_t));
    mes_t->msgType = msgType;
    mes_t->dataLength = 0;
    mes_t->clientID = 0;
    mes_t->usageCount = 0;
    mes_t->dataBuf = malloc(sizeof (dataLength));
    return mes_t;
}

はい、うまくいきました...しかし、残念ながらmallocに関する問題は解決しませんでした:(!!これはファイルが多すぎる巨大なプロジェクトです。コードを投稿できませんが、問題をデバッグする方法を教えてもらえますかどこでmallocが失敗していますか?

4

1 に答える 1

2

/HEAPは、ヒープ サイズをバイト単位で設定します。また、ドキュメントの角括弧はオプションのパラメーターを示します-実際にはこれらを入力しません。したがって、たとえば次のようになります

/HEAP:1073741824

1 GB ヒープの場合、または

/HEAP:1073741824,16777216

ヒープサイズに加えて「commit」パラメーターを本当に指定したい場合 (おそらくしないでください)。

残念ながら、これでメモリ不足という本当の問題が解決するとは思いません。メモリ リークが発生している可能性がありますが、これはvalgrindなどのツールで追跡できます。そうでない場合は、設計が悪く、メモリ リークよりも修正がはるかに困難です。

于 2012-08-05T05:50:52.700 に答える