C++中全局数组的实际空间
2025-10-12 11:59:49
发布于:上海
在c++中,一个全局数组的空间并非是你所设置的大小,列如:
int a[3];
int main(){
a[110] = 1;
return 0;
}
这段代码运行时并不会发生数组下标越界
C++的设计哲学是效率优先,因此编译器不会对数组下标进行边界检查。
数组的内存分配仅记录起始地址和长度,访问时直接通过偏移量计算内存位置,编译器不会验证索引是否超出范围。
这种设计牺牲了安全性以换取运行效率。
初始化时,多余的空间就被一起初始化:
#include <iostream>
int a[3]={};//初始化为空
int main(){
std::cout << a[110];
}
输出:0
这里空空如也













有帮助,赞一个