इससे पहले मुझे सी (विजुअल स्टूडियो) में गतिशील स्मृति के साथ एक समस्या का सामना करना पड़ा। मेरे पास एक कम या कम कामकाजी प्रोग्राम था जिसने बफर में से किसी एक को मुक्त करते समय रन-टाइम त्रुटि फेंक दी। यह एक स्पष्ट स्मृति भ्रष्टाचार था, कार्यक्रम बफर के अंत में लिखा था।मेमोरी भ्रष्टाचार डिबगिंग
मेरी समस्या यह है कि यह ट्रैक करने में बहुत समय लग रहा था। भ्रष्टाचार के बाद त्रुटि को नीचे फेंक दिया गया था, और बफर एंड ओवरराइट होने पर मुझे यह पता लगाने के लिए मैन्युअल रूप से पूरे रन को डीबग करना पड़ा।
क्या इस समस्या को ट्रैक करने में सहायता करने के लिए कोई उपकरण \ तरीका है? इस पर नज़र रखने में सहायता के लिए
int *pNum = malloc(10 * sizeof(int));
// ||
// \/
for(int i = 0; i < 13; i++)
{
pNum[i] = 3;
}
// error....
free(pNum);
इस प्रकार का नहीं है 'बफर सेक्युटिटी चेक' कंपाइलर विकल्प पाप वीएस करता है? – stijn
जादू संख्या का उपयोग न करें? – phant0m
@ phant0m यह वास्तविक कोड नहीं था, यह एक उदाहरण था, न ही यह मेरा कोड था ... बफर गतिशील रूप से डेटा के आकार के आधार पर आवंटित किया गया था, और उसके आकार की गणना करने वाले फ़ंक्शन में एक छोटी बग थी ... मेरे प्रश्न के अलावा इस मुद्दे को ट्रैक करने के बारे में है, इसे रोकने से नहीं ... –