-1

ここにコードがあります。構造体にメモリを割り当てるために malloc を使用しています。この構造体の 1 つのメンバーには、while ループ内で StrDup を使用して文字列が割り当てられますが、他のメンバーは値を変更する必要はありません。現在、StrDup を使用しているため、メモリをクリーンアップする必要があります。そうしないと、メモリ リークが発生しますが、メモリのクリーンアップによって構造体の malloc が破損します。私は何をすべきか?前もって感謝します。

    do
    {
       if( pURL == NULL )
           break ;
       pData->URL = StrDupA(pURL) ;

    }while(pURL != NULL) ;
4

2 に答える 2

0

私は解決策を見つけました。Malloc of Structは、各スレッドが独立して動作できるようにするため、do-whileループ内で実行する必要があります。現在の唯一の問題は、pData->hEventおよびpData->hSemaphoreを初期化することです。

//Before entering do-while loop
hEvent = CreateEvent....;
hSemaphore = CreateSemaphore......;

//inside do-while loop
pData->hEvent = hEvent ;
pData->hSemaphore = hSemaphore ;

//Now in ClearMemory() Function
LocalFree(pData->URL) ;
free(pData) ;

すべてのスレッドには独自の構造体があるため

于 2012-02-23T05:13:56.670 に答える