मेरे कोड के नीचे की तरह है:सी ++ मेमोरी आवंटन मुद्दे
#include <string.h>
int main()
{
int ii = 123;
char str[7] = "";
strcpy(str,"123456");
return 0;
}
मैं VS2010 में इस चलाने के लिए, स्मृति की तरह है नीचे
मैं उत्सुक क्या स्मृति में cc
इस्तेमाल किया हूँ के लिये? और cc
की संख्या की गणना कैसे की जाती है?
और एमएस ने भरने के मूल्य के रूप में '0xCC' क्यों चुना? क्योंकि x86 निर्देश सेट में '0xCC' एकल-बाइट ब्रेकपॉइंट निर्देश है। इस तरह, यदि आप गलती से अपूर्ण स्मृति निष्पादित करते हैं, तो यह तुरंत ब्रेकपॉइंट पर पहुंच जाएगा। –
@Rob कि मुझे नहीं पता था। :) मुझे लगता है कि अब यह कम प्रासंगिकता है कि हमारे पास स्मृति सुरक्षा है? – Mysticial
@ मिस्टिकियल: वास्तव में नहीं: यह केवल पृष्ठ स्तर पर काम करता है (एक संपूर्ण पृष्ठ निष्पादन योग्य के रूप में चिह्नित किया जा सकता है या नहीं, और केवल अगर सीपीयू, ओएस और प्रक्रिया सभी एनएक्स-बिट सक्षम करने के लिए सहमत हैं)। लेकिन क्या होगा यदि आप 2 केबी पेज से कोड के 40 बाइट्स का उपयोग करते हैं? पृष्ठ निष्पादन योग्य चिह्नित किया जाना चाहिए, जो शेष पृष्ठ निष्पादन योग्य छोड़ देता है, लेकिन कचरा युक्त :) – jalf