相关疑难解决方法(0)

我是否施放了malloc的结果?

这个问题,有人建议意见,我应该不会投的结果malloc,即

int *sieve = malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

而不是:

int *sieve = (int *) malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?

c malloc casting

2318
推荐指数
27
解决办法
22万
查看次数

C - 指针在释放后不为空

释放后指针的值是否为NULL?

int* p = malloc(sizeof(*p));

free(p);

if(p==NULL)
    printf("Null\n");
else
    printf("Not null\n");
Run Code Online (Sandbox Code Playgroud)

输出:

 Not null
Run Code Online (Sandbox Code Playgroud)

好吧,我假设没有;

无论如何,我今天早些时候提出了一个问题:

在这里查看: C - 如何释放动态分配的内存?

List* head1 = NULL;

insertFront(&head1, 1);
insertFront(&head1, 2);

print(head1);

while (head1)
{

    List *temp = head1;
    head1 = head1->next;
    free(temp);
}

if(head1 == NULL)
    printf("Null\n");
else
    printf("Not null\n");
Run Code Online (Sandbox Code Playgroud)

这种情况下的输出:

Null
Run Code Online (Sandbox Code Playgroud)

在这种情况下,在释放head1(节点也)后,head1变为null,不是吗?

最后,我错过了一些概念吗?

head1为null,但p不是.

我的问题是:

为什么head1和p之间的值不同?

c free pointers dynamic-memory-allocation

-2
推荐指数
1
解决办法
861
查看次数

标签 统计

c ×2

casting ×1

dynamic-memory-allocation ×1

free ×1

malloc ×1

pointers ×1