如果一个C++模板从未被引用,它会使用内存吗
Does a C++ template use memory if it is never referenced?
假设我声明了一个模板,但从未在C++中引用它。编译器在可执行文件中对它做了什么吗?它会占用任何进程内存吗?
不,不会为从未实例化的函数模板生成任何代码。此外,不会为从未调用过的类模板的非模板成员函数生成任何代码。
特别是,可执行文件的大小不会更大,也不会出现任何运行时开销。
没有。
模板类和函数不是实际的类或函数:它们是编译器如何生成某些类型的类和函数的指导。当您引用模板时,编译器会使用该模板来确定如何生成源代码,并为模板的每个不同参数化编译生成的代码一次。
使用模板的唯一开销是一点额外的编译时间,对于20世纪80年代以后任何时候构建的计算机来说都没什么大不了的。
相关文章:
- 对具有动态分配的内存和析构函数的类对象的引用
- 多个"常量引用"变量可以共享同一个内存吗?
- C++ 在类中使用常量引用文本时 O2 内存泄漏
- 常量引用的内存位置
- 引用释放的内存是未定义的行为吗?
- 为什么"std::uninitialized_copy"通常取消对未初始化内存的迭代器的引用不是未定
- 垃圾回收正在移动内存中被引用的对象,破坏Unreal4引擎中的引用
- X 处的指令引用了 Y 处的内存.内存无法读取
- 按引用传递和动态内存分配之间的区别是什么
- 如果引用应该保留,不删除析构函数中的指针会导致内存泄漏吗?
- 内存引用发送到双指针
- 可变引用以及指针如何与内存相互作用
- 通过引用 cpp 中的变量占用的内存
- C++中引用变量的内存?
- 来自引用指针的内存泄漏
- 在闭包中,如何通过存储在内存中的指针或引用类型捕获可变性或用现代函数式语言进行处理?
- Swift 3 引用类型和内存管理
- 数组是通过引用传递的,但是如果我只传递未存储在内存中的数组的值,会发生什么
- cpp 中的引用如何具有相同的内存地址
- 在递归循环中条件修改的引用内存