错误 C6011:取消引用 NULL 指针“NAME”。 C

问题描述 投票:0回答:1

我在 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;
}
c warnings
1个回答
0
投票

您还没有检查内存分配是否成功,并且

malloc()
可以(但可能不会)返回
NULL
,然后您将在循环中取消引用空指针。因此,如果您按照教科书的指示进行操作并检查
malloc()
的返回值,您可能可以避免该错误。

如果你的教科书没有说类似“永远检查

malloc()
及其朋友的返回值”之类的内容,那么你应该强行将你的教科书扔进熔炉,这样它就不能再误导你或其他任何人了。

请注意,使用

c6011
进行简单的 Google 搜索会找到 警告 C6011 并开始描述:

此警告表明您的代码取消引用了潜在的空指针。如果指针值无效,则结果未定义。要解决此问题,请在使用前验证指针。

© www.soinside.com 2019 - 2024. All rights reserved.