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 回答
1

基本上 NULL 是一个整数,而您的 searchEnginesNamesQueue 是一个字符指针数组。你不能那样分配它。尝试将 char 指针的值指向 NULL,可能像这样 *char = NULL。

于 2013-07-09T09:38:52.433 回答