मैं पहले से लिखे गए कुछ मैटलैब कोड को वेक्टरराइज कर रहा हूं, और इस प्रक्रिया के दौरान मैटलैब सेगमेंटेशन दोषों के कारण क्रैश हो रहा था। मैंने समस्या को एक प्रकार की गणना में संकुचित कर दिया: एकाधिक संरचना गुणों को असाइन करना।वेक्टर असाइनमेंट को पुन: सक्रिय करते समय मैटलैब सेगमेंटेशन गलती
उदाहरण के लिए, इस रूप का भी स्वयं काम अंततः एक SEG गलती जब कई हजार गुना निष्पादित कारण बनता है:
[my_class_instance.my_struct_vector.my_property] = my_class_instance.my_struct_vector.my_property;
मैंने शुरू में माना कि यह किसी प्रकार की स्मृति रिसाव होनी चाहिए, इसलिए हर पुनरावृत्ति के बाद जावा की मुफ्त मेमोरी को प्रिंट करने का प्रयास किया, लेकिन यह काफी स्थिर रहा।
तो, हाँ, पूरी तरह से एक नुकसान में अब क्यों यह टूट जाता है के रूप में: -/
अद्यतन: निम्न परिवर्तन SEG दोषयुक्त ठीक करता है:
अस्थायी = [my_class_instance.my_struct_vector];
[temp.my_property] = temp.my_property;
[my_class_instance.my_struct_vector] = temp;
सवाल यह है कि यह कुछ भी ठीक क्यों करेगा। संरचना सूची की बजाय शायद हैंडल क्लास तक पहुंचने के बारे में कुछ?
अद्यतन 2: भूखंड
गाढ़ा मैं अंत में समस्या और एक डमी कार्यक्रम काफी सरल यहाँ पोस्ट करने के लिए का उपयोग कर के आसपास काम दोहराया गया है:
एक साधारण वर्ग:
classdef test_class
properties
test_prop
end
end
और एक प्रोग्राम जो कक्षा के साथ वेक्टर असाइनमेंट का एक गुच्छा बनाता है, और हमेशा क्रैश होगा।
test_instance = test_class();
test_instance.test_prop = struct('test_field',{1 1});
for i=1:10000
[test_instance.test_prop.test_field] = test_instance.test_prop.test_field;
end
अद्यतन 3: भूखंड thins
बाहर कर देता है मुझे एक बग मिला। Matlab तकनीकी समर्थन के अनुसार, वर्ग गुणों के बार-बार वेक्टर असाइनमेंट R2011a (और संभवतः पहले संस्करण में) में काम नहीं करेगा। उसने मुझे बताया कि यह R2012a में ठीक काम करता है, और उसके बाद मैंने खोजे गए वही कामकाज का उल्लेख किया: एक अस्थायी चर का उपयोग करें।
तो, हाँ ...
यकीन है कि इस सवाल का कि समर्थन टिकट के साथ समाप्त होता है, लेकिन किसी भी साहसी व्यक्तियों को क्यों इस बग बिल्कुल मौजूद है के रूप में एक शॉट लेने के लिए चाहते हैं, तो मैं निश्चित रूप से अभी भी होगा इस तरह के एक जवाब में रुचि रखते हैं। (सीखना मजेदार है!)
आपका मैटलैब संस्करण क्या है? जीत के लिए –
R2011a 7 64 बिट – zergylord
आपकी मदद नहीं कर सकता ... मेरे पास लिनक्स 64 बिट पर R2010b है, और यह ठीक काम करता है। क्या आपको मेमोरी डंप या समान मिलता है? –