gpt4 book ai didi

c - 在 C 程序中两次为同一个指针调用 'free' 有什么坏处吗?

转载 作者:太空狗 更新时间:2023-10-29 16:43:16 26 4
gpt4 key购买 nike

如果我有一个 c 程序,比如:

SomeTypePtr my_type;
my_type = malloc(sizeof(someType));

/* do stuff */

free(my_type);

/* do a bunch of more stuff */

free(my_type);

为 my_type 调用“免费”有什么坏处吗?调用free(my_type)后,指针是不是又变成空指针了?

最佳答案

使用free 释放内存区域不会使指针的内容为空。假设你有 int *a = malloc (sizeof (int)) 并且 a0xdeadbeef 并且你执行 free (a) 然后在执行之后 a 仍然包含 0xdeadbeef 但是在 free 调用之后这个内存地址不再为你保留。就像你租了一个带 malloc 的公寓已经使用了一段时间,通过 free 归还了公寓那么你可能有一个重复的公寓 key ,但它不是为你。

在已经freed 的内存上执行free 将导致双重释放内存损坏。

关于c - 在 C 程序中两次为同一个指针调用 'free' 有什么坏处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6039440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com