写在前面
因项目需要,想在VS中检测内存越界,检索到了AddressSanitizer,然后发现了Clang,又进一步找到了LLVM。借此,总结一下查阅到的相关内容。
编译与链接
在正式开始之前,插播一段编译器和链接器。
编译器 主要用于将源代码从高级语言翻译成低级语言(汇编语言、目标代码、机器码),输出目标文件。
链接器 主要用于将一个或多个目标文件(obj)与库文件(lib)合并成一个可执行文件(exe)或者库文件(lib、dll等)。
编译器可分为前端(front end)和后端(back end),两者以中间代码(IR,Intermediate Representation)为分界。