我是一個真正的C++ noob,請耐心等待。使用make test直接調用它時出現奇怪的行爲./prog
我有一個簡單的程序。當我編譯它與g++ -Wall prog.cpp -o prog
,然後運行它./prog
它只是段錯誤。
經過一番修補之後,我寫了一個makefile(見下文)。如果我運行make test
,程序編譯並運行良好。如果我用./prog
運行它,它會出現段錯誤。 (確切的錯誤信息是Segmentation fault (core dumped)
)
任何人都可以解釋爲什麼嗎?
下面是程序:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <sys/time.h>
int main() {
srand(time(NULL));
//int i, j, k, i2, j2, k2;
int N = 1000;
double mul1[N][N];
double mul2[N][N];
double res[N][N];
printf("N: %d\n", N);
for(int x=0; x<N; x++) {
for(int y=0; y<N; y++) {
mul1[x][y] = rand() % 100;
mul2[x][y] = rand() % 100;
res[x][y] = 0;
}
}
return 0;
}
這裏是生成文件:
all: prog
prog: prog.cpp
$(CXX) -Wall -g -o [email protected] prog.cpp
test: prog
./prog
clean:
rm -f prog
請耐心等待:我的機器有2GB內存,這是怎麼回事?爲什麼它會與'make test'一起工作?謝謝! – Wukerplank
您有2GB *物理*內存。堆棧溢出問題與虛擬內存和地址空間有關。它與使用物理內存沒有任何關係。 –
@Wukerplank這不是你有RAM的問題,而是操作系統爲每個進程分配多少的問題。在Linux中使用'ulimit -s'知道多少。 – ouah