0

私はの配列を持っていますchar*

#define SEASRCH_ENGINES_QUEUE_MAX_SIZE  12
static char* searchEnginesNamesQueue[SEASRCH_ENGINES_QUEUE_MAX_SIZE];

メモリを解放した後、それを無効にしたい:

searchEnginesNamesQueue = NULL;

しかし、私はこのエラーが発生します:

incompatible types when assigning to type 'char *[12]' from type 'int'

4

2 に答える 2

4

これは配列であり、配列を割り当てることはできません。

また、「そのメモリを解放する」ことはできず、配列は解放できず、動的に割り当てられた (「ヒープ」) メモリのみを解放できます。

配列に格納されたヒープ メモリ ポインターがあり、その後解放された場合は、配列内の各ポインターを次のように設定する必要がありますNULL

for(int i = 0;
    i < sizeof searchEnginesNamesQueue / sizeof *searchEnginesNamesQueue;
    ++i)
{
  searchEnginesNamesQueue[i] = NULL;
}

ループは中かっこなしで簡単に記述できますが、水平スクロールを避けるためにヘッダーを複数行に配置する必要がありました。

sizeofコンパイラにループ境界を計算させるための の巧妙な使用に注意してください。

于 2013-07-09T09:37:16.217 に答える