[C&C++] 容易犯错的经验之谈

本文总结了编程过程中容易忽视的内存管理问题,包括DC和Bitmap的使用注意事项、指针释放细节、多线程锁的正确使用方法等,并强调了良好编程习惯的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.DC 用完记得ReleaseDC,不然就等着内存被泄露关吧。这个特别容易忘记。

2.Bitmap用完要unloadBitmap,否则bmBit指针指向的空间无法释放,你把bitmap给删了都没用。

3.数组char *arr = new char[12]; 释放应该delete[] arr; 如果只写delete arr,那只会释放数组第一个元素。

4.良好的习惯是使用指针前都要先判断是否为空,不为空先free或者delete后再用,避免操作失误导致的内存泄露,当然初始化时候得先把指针付空。

5.new/delete , malloc/free ,不能混用,否则有可能释放不干净。

6.c语言是不能直接访问c++的成员变量的,这个很纠结,经常在这蛋疼,特别是c写的底层库,而上层库用c++注册的回调,这样回调函数访问不到c++的成员变量。

7.用thread_mutex_lock和unlock做临界代码时候,一定记得每个出口return地方都要unlock,不然就死锁了。当然信号量原则一样。

8.编程中切记临界值的处理,另可多写一个case或者一个if,也不要随便包含给>或<去了,最后最难改的bug就是临界值的地方。

9.char* 可以转换成 const char*,反之不可,所以你的函数接口设计不改变参数的尽量加const,否则和系统底层函数相互调用的时候就很纠结。

10.出现段错误一般是缓冲区溢出,数组越界,检查下memset用的地方是否正确。

11.结构体初始化完记得memset,否则后面有很多不可估计的错误,很难找原因。

12.float型千万别用==判断相等,只能用<和>控制在一个精度范围内,这个虽然大家都知道,但用的时候一不小心就写==了。要不就干脆转换成int型比较。

13.除数一定要判断下是否会为0,这也经常忘,不管逻辑上会不会为0。

14.数组下标用的时候也要判断是否越界,否则后期很难控制的出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值