C++编译器傻傻分不清楚?
#AskCpp06 C++编译器傻傻分不清楚?
编译器是什么?
编译器是一种将源代码编译成目标代码的程序。
这里的源代码通常指高级语言写的程序,目标代码为汇编语言或者机器码。
现代编译器系统的一般流程:
源代码(source code)→ 预处理器(preprocessor)→ 编译器(compiler)→ 汇编程序(assembler)→ 目标代码(object code)→ 链接器(linker)→ 可执行文件(executables)
编译器的分类:
本地编译器(编译出与编译器所在系统平台相同的程序)
交叉编译器(编译出在不同平台上运行的程序)
C++ 编译器
C++ ...
静态库与动态库
#AskCpp02 VS中的静态库与动态库
什么是静态库?
什么是动态库?
两者有什么区别?
在 VS 中
创建静态库
使用静态库
创建动态库
使用动态库
在 Qt 中
创建静态库
使用静态库
创建动态库
使用动态库
其他
如何查看一个 dll 有哪些函数?
怎样判断一个 dll 是 64 位还是 32 位?
参考
《维基百科》
《程序员的自我修养–链接、装载与库》
https://www.cnblogs.com/skynet/p/3372855.html
https://docs.microsoft.com/zh-cn/cpp/build/walkthrough-creating-and-using...
有什么好的开源库值得一读?
#AskCpp05 有什么好的开源库值得一读?
目的
通过源码学习 C++ 技术
能给当前工作带来帮助
为以后面试作准备
要求
公认好项目
还看得懂
最好有相关源码解析的书籍或教程
哪里找项目
知乎上看回答
Google 直接搜索
GitHub 搜索
同事、朋友帮忙推荐
找到了哪些项目
SGI STL
侯捷的《STL 源码剖析》选择的是 SGI STL 源码,此源码注释丰富、结构清晰、在众多 STL 实现版本中可读强,并可以依据书籍来阅读。
levelDB
Google 开源的 k-v 数据库管理系统,Google 精品,众多网友推荐。
SQ...
时间复杂度和空间复杂度
#AskCpp04 如何考量算法的效率?
时间复杂度
算法的时间复杂度(Time complexity)是一个定性描述该算法运行时间的函数,记作 T(n)。
但是,一个算法的运行时间必须得在计算机上运行测试才能确定,无法从理论上计算出来。实际中,我们只需要比较算法花费时间的差别即可,并不需要每个算法都上机测试。并且,算法花费的时间与算法中语句执行的次数成正比,这个执行次数称为语句频度或时间频度,也记为T(n)。
**通常表示为 T(n) = O(f(n)) **
大 O 符号用来表述时间复杂度。
f(n) 是一个辅助函数,随着算法的输入大小 n 的增大,其执行时间的增长速度可以用 f(n) 来描述。
举例
void func(int n) {
for(...
可变长度数组
什么是可变长数组?
是否遇到过定义一个数组,但长度不确定,因为这个长度是根据其他条件来确定的,这种情况下就需要定义一个变长数组。
可变长数组是指数组对象的长度在运行时(而不是编译时)确定。
两种方式使用
用 new
int len = 6;
int *p = new int[len]; // 运行时确定的长度
用 vector
std::vector<int> v = {1, 2};
v.push_back(3); // 改变了数组长度
还可以自定义可变长度数组类
从略
参考
https://zh.wikipedia.org/wiki/%E5%8F%AF%E5%8F%98%E...
代码在内存中的什么位置?
内存分区
C/C++ 内存其实只分为两个区:代码区和数据区。
数据区:栈、堆、全局/静态存储区、常量区。
栈(Stack):由编译器自动分配和释放,存放函数参数、局部变量等。
堆(Heap):由程序员分配释放,管理不力可能造成内存泄露。
代码区:存放函数体的二进制代码,只读。
so,代码存在代码区!
参考
怎样检测内存泄露?
何为内存泄露?
内存泄露(Memory leak):指动态申请的内存没有及时释放。
后果
泄露导致可用内存越来越少,最终程序奔溃。
如何检测?
手动检测
简单地在 malloc/free,new/delete 处加日志记录。
重载 malloc/free,new/delete,记录调用的次数,在程序结束时进行检测。
运用工具
Valgrind 等。
或通过 IDE,如 vs 的调试功能等。
参考
https://zh.wikipedia.org/wiki/%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F
https://yq.aliyun.com/articles/337106
共计 31 篇文章,4 页。