《扩展和嵌入python解释器》1.10.4 NULL指针(NULL Pointers)

1.10.4 NULL指针(NULL Pointers)

一般,带有对象引用参数的函数不希望你传递给它们NULL指针,如果你传递NULL指针,会产生内核转储(dump core)(或者导致后面发生转储)。返回对象引用的函数一般只在表示异常发生时返回NULL。不检查参数是否是NULL的原因是函数经常传递它们收到的对象给其他的函数-如果每个函数都去检查参数是否是NULL,那会有很多冗余检查,并且代码执行速度慢。

最好检查参数是否是NULL的地方是当接受的指针可能NULL’源头(source:)’,例如:在malloc()或在函数可能产生异常的地方。

Py_INCREF()Py_DECREF()宏不检查NULL指针-然而,它们的变体Py_XINCREF()Py_XDECREF()检查。

特定对象类型检查宏(Pytype_Check()) 不检查NULL指针-也,那儿有更多,一排排,调用类型检查的代码,检查对象是否是几种不同的期望的类型,这也会产生冗余检查。没有变量为NULL的检查。

C函数调用机制确保传递到C函数的参数(如例子中的args)永远不为NULL-事实上确保参数总是元组 1.4

NULL指针’逃跑’到Python用户那里是严重的错误。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值