פארוואס איז די מאַקס גרייס פון ביטע [] 2 גיגאבייט - 57 ב?

אויף מיין 64-ביסל מאַשין, דעם C # קאָד אַרבעט:

new byte[2L * 1024 * 1024 * 1024 - 57]

אָבער דעם וואַרפן אַן OutOfMemoryException :

new byte[2L * 1024 * 1024 * 1024 - 56]

פארוואס?

איך פֿאַרשטיין אַז די מאַקסימום גרייס פון אַ געראטן כייפעץ איז 2 גיגאבייט און אַז די מענגע כייפעץ איך בין קריייטינג כּולל מער ווי די ביטעס איך ווילן. ניימלי, עס זענען 4 ביטעס (אָדער 8?) פֿאַר די סינקבלאָקק נומער, 8 ביטעס פֿאַר מעטאַד טאַבלע רעפֿערענץ און 4 ביטעס פֿאַר די גרייס פון דעם מענגע. אַז ס '24 ביטעס אַרייַנגערעכנט וואַטן, אַזוי וואָס קען איך נישט אַלאַקייט אַ מענגע מיט 2 ג - 24 ביטעס? איז די מאַקסימום גרייס טאַקע פּונקט 2 גיגאבייט? אויב דאָס איז דער פאַל, וואָס איז די מנוחה פון 2 גיגאבייט געניצט פֿאַר?

באַמערקונג: איך טאָן ניט טאַקע דאַרפֿן צו אַלאַקייט אַ מענגע מיט 2,000,000 ביטעס. און אפילו אויב איך, 56 ביט איז נעגלאַדזשאַבאַל אָוווערכעד. און איך קען לייכט אַרבעט אַרום דעם שיעור ניצן מנהג BigArray .

28
задан svick 7 July 2011 в 20:33
поделиться