编程随感

1.使用make_pair时,一定要确定其包括类型是否可以深拷贝.

2. 结构体也是如此,虽然是值类型,若其中包含引用类型字段,想产生一个深复制版本,必须手动实现拷贝构造函数或重载赋值符号。参考文章[1]

3. 在用printf打印时要记得加\n, 否则不会立即刷新缓存立即输出, 倘若你程序有bug时就很难定位. cout用endl也是如此.

4.malloc申请空间是受内存碎片影响到你“一次”申请到的最大内存空间(要是连续的空间).系统也会限制你的程序使用malloc申请到的最大内存。详见一下两篇文章:

C对内存的管理 malloc最大值    Anatomy of a Program in Memory

5. 在使用continue, return, break跳出此循环或跳出此函数时,一定要注意处理该函数的一切后续步骤(比如释放之前申请的空间,释放建立的链接等)

6. fopen某个文件时, 一定要记得fclose, 由于系统只能同时打开固定数量的文件, 所以当数据量大时就会出现问题

7. 当使用某个程序库(eg. libyael.so)里面的函数时,如果没有包含其头文件, 编译器可能不会报错, 但运行时会出现段错误, 所以用某个库里面的函数时, 一定要检查有没有包含其头文件。

8. 命名文件(如: 程序文件, 结果文件), 文件夹等时, 尽量避免用"new", "old"命名来区别不同版本, 可根据实际的功能差别和数据差别等命名来进行区分

9. 使用vector.erase(b, e) 删除vector元素时, 一定要注意迭代器b和e在v.begin()和v.end()之间, 且前者在后者之前.

10. 出现undefined reference to错误时, 首先考虑是否存在C++程序调用了C库,如果是则在包含头文件时加上extern "C" {...}

Reference

[1] 结构体的浅复制和深复制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值