gpt4 book ai didi

c - 释放内存后我们如何访问指针?

转载 作者:太空宇宙 更新时间:2023-11-04 00:38:02 26 4
gpt4 key购买 nike

据我了解,

free() 用于释放我们之前使用 malloc 分配的内存。

在下面的代码片段中,我释放了分配的内存。但即使在释放后我也能访问指针?怎么可能?

免费在内部如何运作?

#include<iostream>
using namespace std;

int main()
{
int *p=(int *)malloc(sizeof(int));
*p=17;
free(p);
*p=*p+1;
printf("\n After freeing memory :: %d ",*p );
return 0;
}

最佳答案

您当然可以在调用free(p) 后继续使用p,没有什么可以阻止您。然而,结果将是完全不确定和不可预测的。它只靠运气。这是一个称为“use after free”的常见编程错误,它在许多程序中可以正常工作而没有“问题”——直到它导致问题为止。

有些工具非常擅长发现此类错误,例如 Valgrind .

关于c - 释放内存后我们如何访问指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22033822/

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