متى يتم تخصيص مصفوفة ذات حجم ثابت على المكدس؟
-
15-11-2019 - |
سؤال
لدي الطريقة التالية لنسخ البايتات من دفق مأخذ التوصيل إلى القرص:
public static void CopyStream(Stream input, Stream output)
{
// Insert null checking here for production
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, bytesRead);
}
}
ما يثير فضولي هو:سوف buffer
يتم تخصيصها على المكدس أو على الكومة؟من المؤكد أنه يمكنني جعل هذه الطريقة غير آمنة وإضافة fixed
الكلمة الرئيسية للإعلان المتغير ، لكنني لا أريد أن أفعل ذلك مع IFN.
المحلول
ال buffer
سيتم تخصيص المتغير على المكدس، وذاكرة 8192 بايت buffer
المتغير يحمل موقع سيكون على الكومة.
لماذا تتحدث عنه fixed
؟هل تحاول تسريع الأمور؟يكاد يكون من المؤكد أنه لن ...
على حد تعبير إريك ليبرت:
"لكن في الغالبية العظمى من البرامج الموجودة هناك ، لن تكون التخصيصات المتغيرة المحلية والمعدات المتغيرة عنق الزجاجة."
لا تنتمي إلى StackOverflow