Tôi đang triển khai một chương trình tuần tự để sắp xếp như quicksort. Tôi muốn kiểm tra hiệu suất của chương trình của tôi trong một mảng lớn của 1 hoặc 10 tỷ số nguyên. Nhưng vấn đề là tôi nhận được lỗi phân đoạn do kích thước của mảng.Làm thế nào để khai báo và sử dụng mảng lớn 1 tỷ số nguyên trong C?
Một mã mẫu tờ khai của mảng này:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 1000000000
int main(int argc, char **argv)
{
int list[N], i;
srand(time(NULL));
for(i=0; i<N; i++)
list[i] = rand()%1000;
return 0;
}
Tôi có một đề xuất để sử dụng chức năng mmap. Nhưng tôi không biết cách sử dụng nó? ai cũng có thể giúp tôi sử dụng nó?
Tôi đang làm việc trên Ubuntu 10.04 64-bit, gcc phiên bản 4.4.3.
Cảm ơn câu trả lời của bạn.
Máy tính của bạn có bao nhiêu bộ nhớ vật lý? – BlueCode
@BlueCode: Điều đó có lẽ không quan trọng; đó là bộ nhớ ảo quan trọng; không phải tất cả bộ nhớ được cấp phát trong không gian địa chỉ của quy trình cần được sao lưu ngay lập tức bằng RAM. –
hãy thử đặt nó trên heap thay vì ngăn xếp. Nó khá có khả năng là kích thước stack tối đa bị giới hạn bởi hệ điều hành hoặc c runtime – pm100