c - 使用 free() 释放内存

标签 c memory-management free

我想了解c中的free()释放内存或者它只是删除malloc分配的内存中的数据。

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int n;
    printf("enter the size of n:\n");
    scanf("%d", &n);
    int* A=(int*)malloc(5*sizeof(int));
    int i;
    for(i=0; i<n; i++)
    {
        printf("%d\n", &A[i]);
    }

    free(A);

    printf("\n\n-------------\n\n");

    for(i=0; i<n; i++)
    {

        printf("%d\n", &A[i]);
    }

    return 0;
}

在释放 A 之后,它仍给出 A 的相同地址。 free() 实际上做了什么?

最佳答案

它会释放内存,但由于 C 会让你搬起石头砸自己的脚,因此指针仍然指向已释放的内存块。以任何方式使用它都会调用未定义的行为

关于c - 使用 free() 释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39941793/

相关文章:

c - 对如何使用 malloc()/calloc() 创建内存的误解

memory-management - RabbitMQ 内存管理和复制

java - 关闭 JavaFX 选项卡不会释放内存

C 编程语言中的字符作为整数

c - 动态分配内存中指针的访问值

c - 我是 "have to"free() 静态动态分配指针吗?

C - 调用 free() 后程序崩溃

c - C中的结构体数组

c - asmlinkage 在 Linux 代码中没有定义

c - IA32 到 Y86 汇编代码转换