शायद यह एक नौसिखिया प्रश्न है, लेकिन क्या एक फ़ंक्शन को स्थानीय चर में पॉइंटर स्वीकार करने से रोकने के लिए सी/सी ++ में कोई तरीका है?स्थानीय पॉइंटर्स को रोकना
int* fun(void)
{
int a;
return &a;
}
संकलक एक चेतावनी है कि सूचक लौटाया नहीं जा सकता उत्पन्न करेगा:
इस कोड पर विचार करें। अब इस पर विचार करें:
int* g;
void save(int* a)
{
g = a;
}
void bad(void)
{
int a;
save(&a);
}
यह बिना किसी चेतावनी के संकलक के माध्यम से गुजर जाएगा, जो खराब है। क्या ऐसा होने से रोकने के लिए कोई विशेषता या कुछ है? अर्थात। कुछ ऐसा:
void save(int __this_pointer_must_not_be_local__ * a)
{
g = a;
}
अग्रिम धन्यवाद अगर कोई जवाब जानता है।
कोड समीक्षा? ... लिंट जैसे कोड प्रोफाइलर्स? –
कोड समीक्षा, स्थिर विश्लेषण। जो आप पूछ रहे हैं वास्तव में बहुत जटिल है। –
क्या होगा यदि मैं 'void f() {int b; बचाओ (&b);/* सामान */सेव (एनयूएलएल);} '? यह जरूरी नहीं है कि वैरिएबल" स्थानीय "है जो मायने रखता है; यह भी बुरा होगा। 'int * p = new int(); save (p); पी हटाएं; ' –