SDL2-模态对话框

SDL2中想要展示对话框有两种办法:使用SDL_ShowSimpleMessageBox()来显示一个简单的对话框,或者使用SDL_ShowMessageBox()来显示一个自定义对话框。 SDL2中只能展示模态对话框(就是如果你不点掉它你原本的窗体就不会有响应的对话框)。

……

《Linux/Unix系统编程手册》时间

日历时间

日历时间就是从Epoch开始计时的时间,以自从Epoch以来的秒数来定义的。Epoch时间也就是格林威治时间(1900年1月1日零点,又称为UTC时间)。

在Linux系统中,存储时间秒数的都是time_t系统类型。

……

《Linux/Unix系统编程手册》进程和程序

进程和程序

首先要区分一下进程和程序

  • 进程:进程是内核定义的抽象的实体,包含用以执行程序的各种资源
  • 程序:程序是文件,里面存放的信息告诉内核如何创建一个进程

也就是说,程序其实和进程不是一个概念。程序是一个用以描述进程的文件,包括

  • 二进制文件标识:描述进程的元信息,现在的Linux系统一般都是ELF格式
  • 机器语言指令:也就是代码,将要存放在汇编语言中的.text段中
  • 程序入口地址:也就是对应汇编中的_start标号地址
  • 符号表和重定位表:描述函数和变量的位置和名称,将要存放于.data .bbs段中
  • 共享库和动态链接信息:记录了链接库的信息
  • 其他信息
……

《Linux/Unix系统编程手册》内存分配

动态内存的底层表示

当我们使用mallocfree函数在内存中开辟新内存的时候,我们究竟是改变了什么呢?其实在内存中有一个program break,这个玩意儿是堆的边界。如果有新的内存被开辟了,这个指针_可能_会移动。

……

《Linux/Unix系统编程手册》编程注意事项

kernel

kernel(核)是Unix操作系统内提供服务的东西,所有的进程想要完成什么操作都必须对kernel进行申请。

系统调用和C库函数

kernel直接提供的操作被称为系统调用(System Call),比如后面说的open, close, read等函数。 像C语言的fopen,fclose等函数就不是系统调用,我们称这种函数为C库函数,是在系统调用之上进行封装的函数。

所有的系统调用都是原子操作。也就是说所有的系统调用在线程中都是安全的,不可被分割的。这对于多线程编程来说至关重要,需要牢记。这也就是为什么在多线程中广泛使用系统调用而不是C库函数。 但是系统调用由于需要内核的处理,所以效率比较低,占用资源比较多。

……

C++强枚举类型

强枚举类型是C++11新增加的功能。其实强枚举类型和Java中的枚举类型有点像:

  • 不能够隐式转换为整数转换

并且还有比较新的特性:

  • 可以指定底层数据类型。原本所有的enum底层都是int类型,但是现在你可以指定除了wchar_t类型之外的所有整型类型作为底层数据了。
  • 获得枚举常量必须通过::来获得
……

wxWidgets绘图

wxWidgets的绘图是采用MVC模式,你必须通知它要绘图了他才会绘制图形。

……

wxWidgets定时器

定时器在wxWidgets中和其他的控件其实是一样的,只不过定时器不显示出来就是了:

……