CMU15-213 课程笔记 01-课程概览

知识点

这门课的目的:深入理解当你执行代码时,计算机在做什么
LLDB:基于 LLVM 的命令行调试器,类似 GBD
在这里插入图片描述

内存引用 Bug

typedef struct {
	int a[2];
	double d;
} struct_t;

double fun(int i) {
	volatile struct_t s;
	s.d = 3.14;
	s.a[i] = 1073741824; /*  有可能出界 out of bound */
	return s.d;
}
  • fun(0) = 3.14;fun(1) = 3.14
  • 然而 fun(2) = 3.1399998664856;fun(3) = 2.00000061035156
  • 这段程序中,发生了访问越界,然而 C 语言不会阻止你这样做,你可以通过地址引用从 int a[] 越界到 double d

你可能感兴趣的:(系统原理,笔记)