C++ 编译器是否为静态(编译时)数组创建开销?

C++ 编译器是否为静态(编译时)数组创建开销?,c++,compiler-construction,C++,Compiler Construction,我知道当你分配一个数组时 int* arr = new int[n]; 编译会产生一个开销,以知道有多少元素需要释放。 但是它会给静态数组带来开销吗 int arr[4]; 我认为答案是否定的,因为您无法删除[]这样的数组,但我需要确定。 谢谢 你说得对。不需要额外存储。如果变量具有自动存储持续时间,则释放会自动发生。编译器拥有编译时所需的所有信息,可以知道何时释放内存以及释放多少内存。不需要额外存储。如果变量具有自动存储持续时间,则释放会自动发生。编译器拥有编译时所需的所有信息,可以知道何

我知道当你分配一个数组时

int* arr = new int[n];
编译会产生一个开销,以知道有多少元素需要释放。 但是它会给静态数组带来开销吗

int arr[4];
我认为答案是否定的,因为您无法删除[]这样的数组,但我需要确定。
谢谢

你说得对。不需要额外存储。如果变量具有自动存储持续时间,则释放会自动发生。编译器拥有编译时所需的所有信息,可以知道何时释放内存以及释放多少内存。不需要额外存储。如果变量具有自动存储持续时间,则释放会自动发生。编译器拥有编译时所需的所有信息,可以知道何时释放内存以及释放多少内存。

欢迎使用StackOverflow!你能澄清一下你所说的间接费用是什么意思吗?同样,你是指非动态意义上的“静态”,还是指
静态
链接或
静态
存储意义上的“静态”?我不确定我是否正确地将其从俄语翻译过来,我们在第二个示例中称为静态数组,在第一个示例中称为动态数组。我指的是静态的,因为只有在不使用“static”关键字(如示例中所示)的情况下,才可能使用常量变量或数字文字创建此数组(因此,它们的大小在编译过程中确定),这两种情况都需要一些CPU周期来初始化指定大小的数组,每次在运行时创建类的实例时。第一个会稍微贵一点,因为涉及构造函数(新的)欢迎使用StackOverflow!你能澄清一下你所说的间接费用是什么意思吗?同样,你是指非动态意义上的“静态”,还是指
静态
链接或
静态
存储意义上的“静态”?我不确定我是否正确地将其从俄语翻译过来,我们在第二个示例中称为静态数组,在第一个示例中称为动态数组。我指的是静态的,因为只有在不使用“static”关键字(如示例中所示)的情况下,才可能使用常量变量或数字文字创建此数组(因此,它们的大小在编译过程中确定),这两种情况都需要一些CPU周期来初始化指定大小的数组,每次在运行时创建类的实例时。第一个会稍微贵一点,因为涉及一个构造函数(新的)谢谢!那么,您认为创建4个变量和数组[4]在占用内存方面是相同的吗?是的,是相同的。可能有一些我不知道的角落案例谢谢!那么,您认为创建4个变量和数组[4]在占用内存方面是相同的吗?是的,是相同的。可能有一些我不知道的角落案例