Thursday, 15 July 2010

c - Heap corruption during free() -


यहां डीबग की जानकारी है,

  HEAP [opencv_CoTraining2.exe]: हीप ब्लॉक 0AD15168 संशोधित 0AD15594 पिछले 424 विंडोज़ के आकार के आकार में opencv_CoTraining2.exe में एक ब्रेकपॉइंट को चालू किया है। यह ढेर के भ्रष्टाचार के कारण हो सकता है, जो कि opencv_CoTraining2.exe या किसी भी DLL में लोड किए गए किसी भी बग को इंगित करता है। यह उपयोगकर्ता F12 दबाए जाने के कारण भी हो सकता है जबकि opencv_CoTraining2.exe पर फोकस होता है। आउटपुट विंडो में अधिक नैदानिक ​​जानकारी हो सकती है   

और यहां मेरा कोड है:

  शून्य प्राप्त करें (चटाई और चटाई) {डबल ** टीएमपी = (डबल **) कॉलोक (mat.rows) , sizeof (डबल *)); डबल एफ [128]; memset (च, 0, sizeof (च)); डबल अधिकतम = 0; के लिए (इंट आई = 0; आई & lt; mat.rows; i ++) {टीएमपी [आई] = (डबल *) कॉलक (मैट सीडोल, आकारफ (डबल)); के लिए (इंट जे = 0; जे एंड एलटी; मैट.cols; j ++) {टीएमपी [आई] [जे] = मैट.टाट & लेफ्टिनेंट; फ्लोट & gt; (आई, जे); अगर (टीएमपी [आई] [जे]> अधिकतम) अधिकतम = टीएमपी [आई] [जे]; }} के लिए (int i = 0; i & lt; mat.cols; i ++) के लिए (int j = 0; j & lt; mat.rows; j ++) tmp [j] [i] / = max; k_means (tmp, mat.rows, 128, K_CLUSTER, KMEANSDIS, kcent); के लिए (इंट आई = 0; आई & lt; K_CLUSTER; i ++) के लिए (इंट जे = 0; जे एंड एलटी; 128; जे ++) केंट [i] [जे] * = अधिकतम; के लिए (इंट आई = 0; आई एंड एलटी; मैट। आरओ; आई ++) फ्री (टीएमपी [आई]); नि: शुल्क (tmp); }   

इस लाइन में गड़बड़ी हुई,

  के लिए (int i = 0; i & lt; mat.rows; i ++) मुक्त (टीएमपी [i] );   

और फ़ंक्शन k_means () पहले पैरामीटर नहीं बदलता है। कौन मेरी मदद कर सकता है?

पी.एस. यहां पर k_means की परिभाषा है ()

  int k_means (डबल डेटा **, int n, int m, int k, double t, double ** centroids)   

और यहां _double ** kcent_

  kcent = (डबल **) कॉलोक (K_CLUSTER, sizeof (डबल *)); (इंट आई = 0; आई & lt; K_CLUSTER; i ++) केंट [i] = (डबल *) कॉलोक (128, आकारफ (डबल)) के लिए;   

मुझे लगता है कि यह हिस्सा सही है।

त्रुटि संदेश यह बहुत ही स्पष्ट है कि यह ढेर भ्रष्टाचार है।

फ़ंक्शन कॉल के ऊपर, लूप के लिए नि: शुल्क () को स्थानांतरित करने का प्रयास करें और k_means () कॉल करें और अपने बाकी प्रोग्राम को टिप्पणी दें। < पी> मुझे शक है कि यह वही है जो ढेर भ्रष्ट कर रहा है!

यदि यह प्रयोग सही ढंग से स्मृति को मुक्त करता है, तो आप जानते हैं कि बग k_means () फ़ंक्शन में है ... < / html>

No comments:

Post a Comment