从类型'int'分配类型'char * [12]'时不兼容的类型

时间:2013-07-09 09:35:29

标签: c memory malloc

我有一个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'

2 个答案:

答案 0 :(得分:4)

这是一个数组,无法将数组分配给。

另外,你不能“释放它的内存”,数组不能被释放,你只能自由地动态分配(“堆”)内存。

如果您的意思是您已将存储在数组中的堆内存指针已被释放,则必须将数组中的每个指针都设置为NULL

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

可以很容易地编写循环而不使用大括号,但我必须将标题放在多行上以避免水平滚动。

请注意使用sizeof来让编译器计算循环边界。

答案 1 :(得分:1)

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