उदाहरण के लिए, निम्नलिखित समारोह कानूनी है:निरंतर सदस्यों के साथ गंतव्य संरचना के साथ memcpy का उपयोग करना कानूनी है?
struct two_int {
const int a, b;
}
void copy_two(const two_int *src, two_int *dest) {
memcpy(dest, src, sizeof(two_int));
}
यह कम से कम निरंतर परिभाषित मूल्यों के संशोधनों में से कुछ प्रकार की अनुमति नहीं है की तरह लगता है, लेकिन यह है कि अगर यह उत्तीर्ण मेरे लिए स्पष्ट नहीं है।
अगर जवाब "यह नहीं, सामान्य रूप में अनुमति दी है", मैं भी विशेष मामले में जहां dest
नव malloc
के साथ स्मृति आवंटित किया जाता है के बारे में सोच रहा हूँ (और इसलिए अभी तक कोई मूल्य सौंपा नहीं किया गया है), जैसे:
two_int s = {.a = 1, .b = 2};
two_int *d = malloc(sizeof(two_int));
copy_two(&s, d);
अद्यतन: ऐसा लगता है उत्तरार्द्ध सवाल (यह ठीक है) सकारात्मक जवाब के लिए एक नव malloc
'घ संरचना के मामले के लिए लगता है, लेकिन मूल, अधिक सामान्य प्रश्न अभी भी खड़ा है , मुझे लगता है।
नहीं। स्थिर चर को संशोधित करने का प्रयास * कहीं भी * अपरिभाषित व्यवहार * है। –
इसका तात्पर्य है कि 'm_oc' _ mveroc' या अन्यथा गतिशील रूप से आवंटित किया जा सकता है, है ना? चूंकि आप किसी भी निर्माण जानकारी को 'malloc' पर पास नहीं कर सकते हैं ... – SODIMM
यह प्रश्न [भाषा-वकील] टैग के लिए अर्हता प्राप्त कर सकता है। –