如果有人能告诉我为什么编译这个程序,我真的很感激:
double data[123456789];
int main() {}
Run Code Online (Sandbox Code Playgroud)
比这个编译要长10倍:
int main() {
double* data=new double[123456789];
}
Run Code Online (Sandbox Code Playgroud)
两者都编译时:
$ g++ -O0
Run Code Online (Sandbox Code Playgroud)
并且可执行文件的大小几乎相同.
我在Ubuntu 10.04上使用gcc 4.4.3.
谢谢.
我有一个C++代码,它有3个数组声明.
float A[NUM];
float B[NUM];
float C[NUM];
当我编译时NUM=512
,编译很快
time g++ -DNUM=512 trials trials.cpp -lm
0.16s user 0.04s system 94% cpu 0.219 total
NUM=167772160
time g++ -DNUM=167772160 trials trials.cpp -lm
7.90s user 0.69s system 99% cpu 8.604 total
但是,当我编译时
float A[NUM];
float B[NUM];
float C[NUM];
,需要更多时间.
NUM=512
time g++ -DNUM=512 trials trials.cpp -lm
0.16s user 0.04s system 94% cpu 0.219 total
NUM=167772160
我多年没用过C++了.我很想知道为什么编译时存在时间差,尽管编译后的目标文件大小相同.