从开始学C语言到现在也有五六年的时间了,也看了不少的好书和烂书,折腾了很多工具(编译器/编辑器圣战),在这里详细汇总一下。折腾久了能够得到一种思想,这种思想不同于那种“拿来主义”,而是“自己去做”的经验。
Some books and tools for learning C/C++
2016:未来计划
2016: Future Plans
转眼大学即将毕业了,虽然大学期间学了(折腾)了不少东西,但是还是觉得很菜啊,还要继续努力。
对于未来我有几点想法,在这个当口写下来吧。督促勉励自己。
谈高考
Talk about the college entrance examination
这两天是高考的时间,想到了几年之前我参加高考的时候,那个时候还是too young,觉得有自己追求的东西就要去做,浪费了很多时间在学习编程上。可是现在看来高中的时候还是要好好学习的,因为学历就刚毕业而言确实是门槛。
Pthread多线程编程
Pthread multithreaded programming
删除void*指针引发的内存泄露
Memory leak caused by deleting void* pointer
当一个void*指向一个class object时,我们对其执行delete
操作,会引发未定义行为——可以确定的是该delete操作不会执行object的析构函数,会导致内存泄露。
结构体成员内存对齐问题
Memory alignment problem of structure members
C语言中不具有原生bool类型
C language does not have a native bool type
有点标题党了,准确的说是C语言标准中并无bool
这个关键字来表示布尔类型。
在C++中我们通常使用bool
变量存储逻辑值。
但是,C语言中是没有bool
类型的,C语言中只有_Bool
类型。
今天和人聊到这个问题,确实容易搞混淆,写出来记录一下。
将树莓派打造成便携的Linux编译环境
Turning the Raspberry Pi into a portable Linux compilation environment
手头有块Rspberry 2B+,吃灰挺长时间了,由于一直在学校老是停电也就没拿它来跑脚本或者下载机。也正是因为最近学校SSH连接VPS的时候老是断电/网,很郁闷,所以折腾一下把树莓派搞成一个便携的编译环境。
关于编译器生成默认构造函数的一些误区
Some misunderstandings about compiler-generated default constructors
当我们编写的一个类没有显式提供构造函数但编译器需要构造函数时
(一定要注意这句话),编译器会为我们生成一个。
但是编译器生成的默认构造函数与我们假想其可以完成的行为并不一致。
进程间通信
Operating system interprocess communication
实现进程/线程间通信的方法有:
- 进程间通信方法有:文件映射、共享内存、匿名管道、命名管道、邮件槽、剪切板、动态数据交换、对象连接与嵌入、动态连接库、远程过程调用等
- 线程同步的方法有:事件、临界区、互斥量、信号量