Difference between revisions of "Ошибка превышения лимита памяти"
EltsiTrelo (talk | contribs) m (acorcasit) |
|||
Line 1: | Line 1: | ||
− | + | trroertro | |
+ | ÐавигаÑиÑ: [[Main Page|ÐÐ»Ð°Ð²Ð½Ð°Ñ ÑÑÑаниÑа]]/[[СиÑÑема ejudge]]/[[ÐÑполÑзование]]/[[ÐеÑдикÑÑ ÑеÑÑиÑованиÑ]]/[[ÐÑибка пÑевÑÑÐµÐ½Ð¸Ñ Ð»Ð¸Ð¼Ð¸Ñа памÑÑи]] | ||
− | + | ÐнглийÑкое название: [[Memory Limit Exceeded]]. | |
− | + | ÐÑибка диагноÑÑиÑÑеÑÑÑ, еÑли в пÑоÑеÑÑе ÑабоÑÑ ÑеÑÑиÑÑÑÑÐ°Ñ Ð¿ÑогÑамма поÑÑебила болÑÑе памÑÑи, Ñем Ñказано в огÑаниÑениÑÑ
задаÑи. ÐбоÑнованноÑÑÑ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑой оÑибки вÑзÑÐ²Ð°ÐµÑ Ð´Ð¸ÑкÑÑÑии (Ñм. далее). | |
− | + | РазнÑе ÑеÑÑиÑÑÑÑие ÑиÑÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ñ
одÑÑ Ðº огÑаниÑÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼ÑÑи Ð´Ð»Ñ ÑабоÑаÑÑей пÑогÑÐ°Ð¼Ð¼Ñ Ð¿Ð¾-ÑазномÑ. Ð ejudge огÑаниÑение памÑÑи ÑеализÑеÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑÑановки огÑаниÑÐµÐ½Ð¸Ñ Ð½Ð° ÑÐ°Ð·Ð¼ÐµÑ Ð²Ð¸ÑÑÑалÑного адÑеÑного пÑоÑÑÑанÑÑва и ÑÐ°Ð·Ð¼ÐµÑ ÑÑека (Ñм. [[ulimit]]). Таким обÑазом, ÑеÑÑиÑÑÐµÐ¼Ð°Ñ Ð¿ÑогÑамма не Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑевÑÑиÑÑ ÑÑÑановленнÑе огÑаниÑениÑ. | |
− | + | ÐиагноÑÑиÑование оÑибки пÑевÑÑÐµÐ½Ð¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð¿Ð¾ памÑÑи в ÑиÑÑеме ejudge ÑабоÑаеÑ, Ñолко еÑли ÑÑÑановлен [[паÑÑ Ðº ÑдÑÑ Linux]]. ÐÑли паÑÑ Ð½Ðµ ÑÑÑановлен, пÑевÑÑение огÑаниÑÐµÐ½Ð¸Ñ Ð¿Ð¾ памÑÑи бÑÐ´ÐµÑ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑÑиÑовано как оÑибка вÑемени вÑполнениÑ. ÐÑоме Ñого, ÑиÑÑема ejudge позволÑÐµÑ Ð¾ÑклÑÑиÑÑ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑÑиÑование данной оÑибки даже еÑли паÑÑ Ðº ÑдÑÑ ÑÑÑановлен. | |
− | + | ХоÑÑ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑÑиÑование данной оÑибки Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ ÑÑаÑÑников Ð´Ð»Ñ Ð¾Ñладки иÑ
ÑеÑений, в болÑÑиÑÑве ÑиÑÑаÑий гÑаниÑа Ð¼ÐµÐ¶Ð´Ñ Ð¾Ñибкой пÑи вÑполнении пÑогÑÐ°Ð¼Ð¼Ñ Ð¸ оÑибкой пÑевÑÑÐµÐ½Ð¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð¿Ð¾ памÑÑи оказÑваеÑÑÑ Ð¾ÑÐµÐ½Ñ ÑазмÑÑой. | |
− | + | ÐапÑимеÑ, еÑли пÑевÑÑен макÑималÑнÑй ÑÐ°Ð·Ð¼ÐµÑ ÑÑека из-за Ñого, ÑÑо пÑогÑамма воÑла в беÑконеÑнÑÑ ÑекÑÑÑиÑ, Ñо ÑÐ°ÐºÐ°Ñ ÑиÑÑаÑÐ¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° ÑкоÑее ÑаÑÑмаÑÑиваÑÑÑÑ ÐºÐ°Ðº оÑибка пÑи вÑполнении пÑогÑаммÑ. Ðо Ñ Ð´ÑÑгой ÑÑоÑонÑ, еÑли пÑогÑамма попÑÑалаÑÑ Ð²ÑделиÑÑ ÑлиÑком много памÑÑи в ÑÑеке (напÑимеÑ, из-за ÑлиÑком болÑÑого локалÑного маÑÑива), ÑÐ°ÐºÐ°Ñ ÑиÑÑаÑÐ¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° ÑаÑÑмаÑÑиваÑÑÑÑ ÐºÐ°Ðº пÑевÑÑение огÑаниÑÐµÐ½Ð¸Ñ Ð¿Ð¾ памÑÑи. ÐÑÑеÑÑвенно, невозможно пÑоÑÑÑм ÑпоÑобом ÑеÑко ÑазлиÑиÑÑ ÑÑи две ÑиÑÑаÑии. | |
− | + | С дÑÑгой ÑÑоÑонÑ, напÑимеÑ, в ÑзÑке C ÑÑнкÑÐ¸Ñ malloc возвÑаÑÐ°ÐµÑ NULL, еÑли памÑÑÑ Ð²ÑделиÑÑ Ð½Ðµ ÑдалоÑÑ. ÐÑли ÑеÑÑиÑÑÐµÐ¼Ð°Ñ Ð¿ÑогÑамма не пÑовеÑÑÐµÑ ÑезÑлÑÑÐ°Ñ ÑÑнкÑии malloc на NULL и полÑÑÐ°ÐµÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð´Ð¾ÑÑÑпа по нÑÐ»ÐµÐ²Ð¾Ð¼Ñ ÑказаÑелÑ, Ñо ÑÑо ÑипиÑÐ½Ð°Ñ Ð¾Ñибка пÑогÑаммиÑÑа и должна ÑаÑÑмаÑÑиваÑÑÑÑ ÐºÐ°Ðº оÑибка пÑи вÑполнении пÑогÑаммÑ. РнаобоÑоÑ, пÑогÑамма Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑлавливаÑÑ ÑиÑÑаÑии, когда malloc возвÑаÑÐ°ÐµÑ NULL, и модиÑиÑиÑоваÑÑ Ñвое поведение (напÑимеÑ, поÑиÑÑив Ñ
еÑ-ÑаблиÑÑ). |
Revision as of 04:46, 8 January 2009
trroertro ÐавигаÑиÑ: ÐÐ»Ð°Ð²Ð½Ð°Ñ ÑÑÑаниÑа/СиÑÑема ejudge/ÐÑполÑзование/ÐеÑдикÑÑ ÑеÑÑиÑованиÑ/ÐÑибка пÑевÑÑÐµÐ½Ð¸Ñ Ð»Ð¸Ð¼Ð¸Ñа памÑÑи
ÐнглийÑкое название: Memory Limit Exceeded.
ÐÑибка диагноÑÑиÑÑеÑÑÑ, еÑли в пÑоÑеÑÑе ÑабоÑÑ ÑеÑÑиÑÑÑÑÐ°Ñ Ð¿ÑогÑамма поÑÑебила болÑÑе памÑÑи, Ñем Ñказано в огÑаниÑениÑÑ Ð·Ð°Ð´Ð°Ñи. ÐбоÑнованноÑÑÑ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑÑой оÑибки вÑзÑÐ²Ð°ÐµÑ Ð´Ð¸ÑкÑÑÑии (Ñм. далее).
РазнÑе ÑеÑÑиÑÑÑÑие ÑиÑÑÐµÐ¼Ñ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑ Ðº огÑаниÑÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼ÑÑи Ð´Ð»Ñ ÑабоÑаÑÑей пÑогÑÐ°Ð¼Ð¼Ñ Ð¿Ð¾-ÑазномÑ. Ð ejudge огÑаниÑение памÑÑи ÑеализÑеÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑÑановки огÑаниÑÐµÐ½Ð¸Ñ Ð½Ð° ÑÐ°Ð·Ð¼ÐµÑ Ð²Ð¸ÑÑÑалÑного адÑеÑного пÑоÑÑÑанÑÑва и ÑÐ°Ð·Ð¼ÐµÑ ÑÑека (Ñм. ulimit). Таким обÑазом, ÑеÑÑиÑÑÐµÐ¼Ð°Ñ Ð¿ÑогÑамма не Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑевÑÑиÑÑ ÑÑÑановленнÑе огÑаниÑениÑ.
ÐиагноÑÑиÑование оÑибки пÑевÑÑÐµÐ½Ð¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð¿Ð¾ памÑÑи в ÑиÑÑеме ejudge ÑабоÑаеÑ, Ñолко еÑли ÑÑÑановлен паÑÑ Ðº ÑдÑÑ Linux. ÐÑли паÑÑ Ð½Ðµ ÑÑÑановлен, пÑевÑÑение огÑаниÑÐµÐ½Ð¸Ñ Ð¿Ð¾ памÑÑи бÑÐ´ÐµÑ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑÑиÑовано как оÑибка вÑемени вÑполнениÑ. ÐÑоме Ñого, ÑиÑÑема ejudge позволÑÐµÑ Ð¾ÑклÑÑиÑÑ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑÑиÑование данной оÑибки даже еÑли паÑÑ Ðº ÑдÑÑ ÑÑÑановлен.
ХоÑÑ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑÑиÑование данной оÑибки Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ Ð´Ð»Ñ ÑÑаÑÑников Ð´Ð»Ñ Ð¾Ñладки Ð¸Ñ ÑеÑений, в болÑÑиÑÑве ÑиÑÑаÑий гÑаниÑа Ð¼ÐµÐ¶Ð´Ñ Ð¾Ñибкой пÑи вÑполнении пÑогÑÐ°Ð¼Ð¼Ñ Ð¸ оÑибкой пÑевÑÑÐµÐ½Ð¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð¿Ð¾ памÑÑи оказÑваеÑÑÑ Ð¾ÑÐµÐ½Ñ ÑазмÑÑой.
ÐапÑимеÑ, еÑли пÑевÑÑен макÑималÑнÑй ÑÐ°Ð·Ð¼ÐµÑ ÑÑека из-за Ñого, ÑÑо пÑогÑамма воÑла в беÑконеÑнÑÑ ÑекÑÑÑиÑ, Ñо ÑÐ°ÐºÐ°Ñ ÑиÑÑаÑÐ¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° ÑкоÑее ÑаÑÑмаÑÑиваÑÑÑÑ ÐºÐ°Ðº оÑибка пÑи вÑполнении пÑогÑаммÑ. Ðо Ñ Ð´ÑÑгой ÑÑоÑонÑ, еÑли пÑогÑамма попÑÑалаÑÑ Ð²ÑделиÑÑ ÑлиÑком много памÑÑи в ÑÑеке (напÑимеÑ, из-за ÑлиÑком болÑÑого локалÑного маÑÑива), ÑÐ°ÐºÐ°Ñ ÑиÑÑаÑÐ¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° ÑаÑÑмаÑÑиваÑÑÑÑ ÐºÐ°Ðº пÑевÑÑение огÑаниÑÐµÐ½Ð¸Ñ Ð¿Ð¾ памÑÑи. ÐÑÑеÑÑвенно, невозможно пÑоÑÑÑм ÑпоÑобом ÑеÑко ÑазлиÑиÑÑ ÑÑи две ÑиÑÑаÑии.
С дÑÑгой ÑÑоÑонÑ, напÑимеÑ, в ÑзÑке C ÑÑнкÑÐ¸Ñ malloc возвÑаÑÐ°ÐµÑ NULL, еÑли памÑÑÑ Ð²ÑделиÑÑ Ð½Ðµ ÑдалоÑÑ. ÐÑли ÑеÑÑиÑÑÐµÐ¼Ð°Ñ Ð¿ÑогÑамма не пÑовеÑÑÐµÑ ÑезÑлÑÑÐ°Ñ ÑÑнкÑии malloc на NULL и полÑÑÐ°ÐµÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð´Ð¾ÑÑÑпа по нÑÐ»ÐµÐ²Ð¾Ð¼Ñ ÑказаÑелÑ, Ñо ÑÑо ÑипиÑÐ½Ð°Ñ Ð¾Ñибка пÑогÑаммиÑÑа и должна ÑаÑÑмаÑÑиваÑÑÑÑ ÐºÐ°Ðº оÑибка пÑи вÑполнении пÑогÑаммÑ. РнаобоÑоÑ, пÑогÑамма Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑлавливаÑÑ ÑиÑÑаÑии, когда malloc возвÑаÑÐ°ÐµÑ NULL, и модиÑиÑиÑоваÑÑ Ñвое поведение (напÑимеÑ, поÑиÑÑив Ñ ÐµÑ-ÑаблиÑÑ).