高质量编程指南读书笔记

 

高质量编程指南读书笔记

运算符的优先级

单目运算符(++,sizeof,->)--算术运算符(+ * &)--位操作(>> >= & |)--逻辑操作(&& ||)


程序员的习惯

一般将目的参数放在前面,源参数放在后边

如果参数是指针且做输入使用,加const,防止该指针在函数体内被意外修改

void StringCopy(char *strDestination,const char *strSource);


函数管好出口和入口,入口参数判断,

常见内存错误

1,分配未成功,即使用(入口参数【assert(p!=NULL)】,malloc申请【if(p==NULL)】)

2,分配成功,未初始化即引用

3,分配成功并初始化,越界操作(多1少1)

4,忘记释放内存,造成内存泄露(申请释放必须配对)

5,已释放,却仍然使用(释放后设置为NULL,防止野指针)

 

 

 

 

---------------------------------------------------------------

 

--------------------------------------------------------------

 

--------------------------------------------------------------

 

 

----------------------------------------------------------------- 


编译器总是要为函数的每个参数制作临时副本,指针参数p的副本是 _p,编译器使 _p = p。如果函数体内的程序修改了_p的内容,就导致参数p的内容作相应的修改。这就是指针可以用作输出参数的原因。在本例中,_p申请了新的内存,只是把_p所指的内存地址改变了,但是p丝毫未变。所以函数GetMemory并不能输出任何东西。事实上,每执行一次GetMemory就会泄露一块内存,因为没有用free释放内存。

 

free()到底干了什么????????????

操作系统回收该段空间,把该空间放到可用链表中,内容可能还没有改变,但是程序已经不能访问啦(未知内容)

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值