gpt4 book ai didi

c++ - 两次释放内存

转载 作者:IT老高 更新时间:2023-10-28 13:02:07 31 4
gpt4 key购买 nike

在 C 和 C++ 中,释放 NULL 指针将导致什么都不做。

不过,我看到有人说如果你“释放内存两次”会发生内存损坏。

这是真的吗?当您两次释放内存时,幕后发生了什么?

最佳答案

int *p = malloc(sizeof(int));
//value of p is now lets say 0x12345678

*p = 2;
free(p); //memory pointer is freed, but still value of p is 0x12345678
//now, if you free again, you get a crash or undefined behavior.

所以,在第一次 free 之后,你应该这样做 p = NULL ,所以如果(任何机会), free(p) 再次调用,什么都不会发生。

这就是为什么未定义两次释放内存的原因:Why free crashes when called twice

关于c++ - 两次释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2468853/

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