编译器是否会为静态(编译时)数组创建开销?
Do compiler creates an overhead for static (compile-time) arrays?
我知道当你用
分配数组时
int* arr = new int[n];
编译会产生开销以了解有多少元素要释放。
但它是否会对静态数组造成开销
int arr[4];
我认为答案是否定的,因为你不能删除[]这样的数组,但我需要确定。
谢谢!
你是对的。不需要额外的存储空间。如果变量具有自动存储持续时间,则重新分配会自动发生。编译器拥有编译时所需的所有信息,以了解何时以及释放多少内存
我知道当你用
分配数组时int* arr = new int[n];
编译会产生开销以了解有多少元素要释放。 但它是否会对静态数组造成开销
int arr[4];
我认为答案是否定的,因为你不能删除[]这样的数组,但我需要确定。 谢谢!
你是对的。不需要额外的存储空间。如果变量具有自动存储持续时间,则重新分配会自动发生。编译器拥有编译时所需的所有信息,以了解何时以及释放多少内存