free(NULL)和操作NULL指向的数据

基于GNU99的C语言标准:

free(NULL)程序不做任何事,直接返回。

操作NULL指向的数据将会导致程序崩溃。

测试代码如下:

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

struct test
{
    int x;
};

typedef struct test * ptr;

int main(int argc, const char * argv[])
{
    
    ptr p = NULL;
    free(p);
    printf("free NULL\n");
    printf("handle null %d", p->x);
    
    return 0;
}

运行结果:


补充:关于GNU99和C99

C99 is simply the version of the C standard as of 1999 as we all know it. C99是1999年版本的C标准,因为我们都知道它。 In GCC it is not fully supported.在GCC,它是不完全支持。
GNU99 is an extension to C99, just like GNU98 is an extension of C98. GNU99是一个扩展,就像GNU98是一个扩展的C98到C99。 From the docs:从文档:
ISO C99 plus GNU extensions. ISO C99再加上GNU扩展。 When ISO C99 is fully implemented in GCC, this will become the default.当ISO C99全面实施GCC,这将成为默认设置。 The name gnu9x is deprecated.系统的的名称gnu9x是过时了。
Clang supports these extensions also.铛也支持这些扩展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值