मैं quicksort जैसे सॉर्टिंग के लिए एक अनुक्रमिक प्रोग्राम लागू कर रहा हूँ। मैं अपने कार्यक्रम के प्रदर्शन को 1 या 10 अरब पूर्णांक में एक विशाल सरणी में परीक्षण करना चाहता हूं। लेकिन समस्या यह है कि मुझे सरणी के आकार के कारण सेगमेंटेशन त्रुटि प्राप्त होती है।सी में 1 अरब पूर्णांक के विशाल सरणी घोषित करने और उपयोग करने के लिए कैसे?
इस सरणी की घोषणा का एक नमूना कोड:
#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;
}
मैं एक प्रस्ताव mmap समारोह का उपयोग करने के मिला है। लेकिन मुझे नहीं पता कि इसका उपयोग कैसे किया जाए? क्या कोई इसे इस्तेमाल करने में मेरी सहायता कर सकता है?
मैं उबंटू 10.04 64-बिट, जीसीसी संस्करण 4.4.3 पर काम कर रहा हूं।
आपके उत्तरों के लिए धन्यवाद।
आपके कंप्यूटर में कितनी भौतिक मेमोरी है? – BlueCode
@ ब्लूकोड: शायद इससे कोई फर्क नहीं पड़ता; यह वर्चुअल मेमोरी है जो मायने रखती है; किसी प्रक्रिया के पता स्थान में सभी आवंटित स्मृति को तुरंत रैम द्वारा समर्थित नहीं किया जाना चाहिए। –
इसे ढेर के बजाय ढेर पर डालने का प्रयास करें। इसकी काफी संभावना है कि अधिकतम स्टैक आकार ओएस या सी रनटाइम – pm100