سؤال

هل يجب أن أحرر الذاكرة المخصصة لمجموعة char ، التي يتم إرجاع المؤشر إليها من قبل char * getenv( char * ) وظيفة؟ وأي الطريق - ج free() أو C+ delete []؟ إذا لا - لماذا؟

أعني:

char * ptr = getenv( "LS_COLORS" );
cout << ptr << endl;
delete [] ptr; //Is this or free() call needed?

شكرًا لك.

هل كانت مفيدة؟

المحلول

يتم تخزين البيانات الأصلية في environ متغير (وهو مجموعة من char* ويحتوي على جميع متغيرات البيئة مع قيمها) ، getenv() ابحث فقط عن الاسم المتغير المقابل ويعيد موضع قيمته من environ متغير ، لذلك ليس عليك تحريره ، وإلا فقد يحدث سلوك غير محدد.

نصائح أخرى

يعيد Getenv مؤشرًا إلى بيئة العمليات الخاصة بك. لا يلزم أن يتم تعامله ، وربما يكون من الجيد عدم القيام بذلك. (ربما يكون الحذف والحر ذكيًا بما يكفي لعدم القيام بأي شيء ، ولكن إفساد بيئتك ليس فكرة جيدة.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top