C 分配给类型'时不兼容的类型;字符*[12]和#x27;从类型';int';
我有一个C 分配给类型'时不兼容的类型;字符*[12]和#x27;从类型';int';,c,memory,malloc,C,Memory,Malloc,我有一个char* #define SEASRCH_ENGINES_QUEUE_MAX_SIZE 12 static char* searchEnginesNamesQueue[SEASRCH_ENGINES_QUEUE_MAX_SIZE]; 我想在释放其内存后使其无效: searchEnginesNamesQueue=NULL 但我得到了这个错误: 从类型“int”分配给类型“char*[12]”时,不兼容的类型是数组,不能分配给数组 此外,您不能“释放其内存”,不能释放数组,只能释放动态
char*
#define SEASRCH_ENGINES_QUEUE_MAX_SIZE 12
static char* searchEnginesNamesQueue[SEASRCH_ENGINES_QUEUE_MAX_SIZE];
我想在释放其内存后使其无效:
searchEnginesNamesQueue=NULL代码>
但我得到了这个错误:
从类型“int”分配给类型“char*[12]”时,不兼容的类型是数组,不能分配给数组
此外,您不能“释放其内存”,不能释放数组,只能释放动态分配的(“堆”)内存
如果您的意思是数组中存储了堆内存指针,这些指针随后被释放,则必须将数组中的每个指针设置为NULL
:
for(int i = 0;
i < sizeof searchEnginesNamesQueue / sizeof *searchEnginesNamesQueue;
++i)
{
searchEnginesNamesQueue[i] = NULL;
}
for(int i=0;
i
不用大括号就可以轻松编写循环,但我必须将标题放在多行上,以避免水平滚动
请注意,巧妙地使用了sizeof
让编译器计算循环边界。这是一个数组,不能为其分配数组
此外,您不能“释放其内存”,不能释放数组,只能释放动态分配的(“堆”)内存
如果您的意思是数组中存储了堆内存指针,这些指针随后被释放,则必须将数组中的每个指针设置为NULL
:
for(int i = 0;
i < sizeof searchEnginesNamesQueue / sizeof *searchEnginesNamesQueue;
++i)
{
searchEnginesNamesQueue[i] = NULL;
}
for(int i=0;
i
不用大括号就可以轻松编写循环,但我必须将标题放在多行上,以避免水平滚动
注意,巧妙地使用了sizeof
让编译器计算循环边界。基本上NULL是一个整数,而searchEnginesNamesQueue是一个字符指针数组。你不能这样分配它。尝试将char pointer的值设置为NULL,可能如下所示*char=NULL。基本上NULL是一个整数,而searchEnginesNamesQueue是一个字符指针数组。你不能这样分配它。请尝试将char指针的值设置为NULL,可能是这样的*char=NULL。数组不可分配。数组不可分配。为什么不free(searchEnginesNamesQueue[i])
?因此,如果我想有一个标志,表示数组中的指针被释放,我必须添加布尔值?我曾想过使用array=NULL
,但这不是一个选项为什么不free(searchEnginesNamesQueue[I])
?因此,如果我想有一个标志,表示数组中的指针被释放,我必须添加布尔值?我曾想过使用array=NULL
,但这不是一个选项我尝试过searchEnginesNamesQueue=(char*)NULL
unsuccessfully*searchEnginesNamesQueue=NULL我已经尝试了searchEnginesNamesQueue=(char*)NULL代码>未成功*searchEnginesNamesQueue=NULL