Segmentation fault on string assignment in C++ -


इस उदाहरण फ़ंक्शन पर एक नज़र डालें:

  रनटाइम कॉन्फ़िगरेशन * conf_rt_conf () {रनटाइम कॉन्फ़िगरेशन * conf; Conf = नया रनटाइम कॉन्फ़िगरेशन (); conf- & gt; arch_path = "./ संग्रह"; conf- & gt; err_log = "./ err_log"; conf- & gt; fail_log = "./ fail_log"; conf- & gt; msg_log = "./ msg_log"; Conf- & gt; सहेजें = "html, htm, php"; Conf- & gt; अनदेखा = "जेपीजी, जीआईएफ"; conf- & gt; कुकीज़ = ""; वापसी Conf; }  

सब कुछ ठीक काम करता है, लेकिन जब मैं इस तरह से कुछ चलाता हूं:

  DatabaseInput ** conf_db_input () {DatabaseInput ** db_input; Db_input = (डेटाबेसइनपुट **) malloc (NUMB_SITES * sizeof (DatabaseInput *)); (इंट आई = 0; आई & lt; NUMB_SITES; i ++) के लिए db_input [0] = नया डाटाबेसइनपुट (); db_input [0] - & gt; FULL_NAME = "ABCNews"; db_input [0] - & gt; उर्फ ​​= "abcn"; db_input [0] - & gt; उपसर्ग = "/ eng"; db_input [1] - & gt; FULL_NAME = "Rzeczpospolita"; db_input [1] - & gt; उर्फ ​​= "आरपी"; db_input [1] - & gt; उपसर्ग = "/ पोल"; वापसी db_input; }  

मुझे पहले असाइनमेंट पर विभाजन त्रुटि मिली। संभवत: इस संरचना के लिए आवंटित निश्चित स्मृति ब्लॉक के साथ कुछ करना है मैं इसे ठीक से काम करने के लिए कैसे दूं?

शायद यह:

  डेटाबेस इनपुट * db_input []; Db_input = नया डाटाबेसइनपुट * [NUMB_SITES]; // (इंट I = 0; i & lt; NUMB_SITES; i ++) के लिए पॉइंटर्स की एक सरणी बनाता है db_input [i] = नया डाटाबेसइनपुट ();  

काम कर सकता है? (मैंने इसका परीक्षण नहीं किया)

ध्यान दें, उपयोग किए जाने वाली मेमोरी को मुक्त करने के लिए, आपको ऐसा कुछ करना चाहिए:

  के लिए (int i = 0; i & lt; NUMB_SITES; I ++) हटाएं डीबी_इनपुट [आई]; हटाएं [] db_input;  

Comments

Popular posts from this blog

python - Overriding the save method in Django ModelForm -

html - CSS autoheight, but fit content to height of div -

qt - How to prevent QAudioInput from automatically boosting the master volume to 100%? -