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