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
Post a Comment