我有以下两个类:
template <size_t size>
class Cont{
public:
char charArray[size];
};
template <size_t size>
class ArrayToUse{
public:
Cont<size> container;
inline ArrayToUse(const Cont<size+1> & input):container(reinterpret_cast<const Cont<size> &>(input)){}
};
我在全局范围内有以下三行代码:
const Cont<12> container={"hello world"};
ArrayToUse<11> temp(container);
char (&charArray)[11]=temp.container.charArray;
在我的全部代码中“容器”对象的唯一用途是初始化“ArrayToUse”类的对象,如前所述,在“charArray”初始化后引用“temp.container.charArray”我将使用它在我的其余代码中引用,现在我想知道编译器是否为“容器”对象保留内存,因为它有临时用途?
最佳答案
在全局范围内定义的任何变量都在编译时为它保留了内存。这并不意味着它一定会被正确初始化,但它仍然存在。
在链接时,Visual C++ 提供了 strip unused data and functions via /OPT 的选项- 看这里。
关于c++ - 编译器会为这个对象保留内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3972109/