我在 C 程序的标题中收到警告,指的是第一个 for 循环中的变量“序列”。 有人可以帮我弄清楚这意味着什么以及如何解决它吗? 这是代码(减去标题):
int main()
{
int* sequence;
int sequenceSize = 10;
sequence = (int*)malloc(sequenceSize*sizeof(int));
for (int i = 0; i < sequenceSize; i++)
{
sequence[i] = i * 10;
}
for (int i = 0; i < sequenceSize; i++)
{
printf("%d ", sequence[i]);
}
free(sequence);
return 0;
}
您还没有检查内存分配是否成功,并且
malloc()
可以(但可能不会)返回 NULL
,然后您将在循环中取消引用空指针。因此,如果您按照教科书的指示进行操作并检查 malloc()
的返回值,您可能可以避免该错误。
如果你的教科书没有说类似“永远检查
malloc()
及其朋友的返回值”之类的内容,那么你应该强行将你的教科书扔进熔炉,这样它就不能再误导你或其他任何人了。
请注意,使用
c6011
进行简单的 Google 搜索会找到 警告 C6011 并开始描述:
此警告表明您的代码取消引用了潜在的空指针。如果指针值无效,则结果未定义。要解决此问题,请在使用前验证指针。