|   |     | 
| (12 intermediate revisions by 2 users not shown) | 
| Line 1: | Line 1: | 
| − | [http://chifire.strefa.pl/sitemap.html url] [http://licawol.strefa.pl/resource1406.htm rap videos download] [http://indronrol.is-the-boss.com/brgetkodo.html nevada state contractors licensing board] [http://zelzelqa.is-the-boss.com/news-indiana-state-2008-12-25.html indiana state nursing license] [http://dronoubr.0lx.net/notorious-big-video.html notorious big video codes] 
 | + | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Вердикты тестирования]]/[[Ошибка превышения лимита памяти]] | 
| − | [http://huruple.qsh.eu/20081223-anukokunda-oka.htm anukokunda oka roju movie] [http://acsitzar.0lx.net/sitemap.html page] [http://naceceli.qsh.eu/page1427.html movie narnia original] [http://zelzelqa.is-the-boss.com/news-rawshooter-premium-2008-12-22.html rawshooter premium crack] [http://releltl.0lx.net/20081111-movie-theatres.html movie theatres in manhattan new york] 
 |  | 
| − | trroertro
 |  | 
| − | ÃÂÃÂÃÂðÃÂòÃÂøÃÂóÃÂðÃÂÃÂÃÂøÃÂÃÂ: [[Main Page|ÃÂÃÂÃÂûÃÂðÃÂòÃÂýÃÂðÃÂàÃÂÃÂÃÂÃÂÃÂÃÂÃÂðÃÂýÃÂøÃÂÃÂÃÂð]]/[[ÃÂáÃÂøÃÂÃÂÃÂÃÂÃÂõÃÂüÃÂð ejudge]]/[[ÃÂÃÂÃÂÃÂÃÂÿÃÂþÃÂûÃÂÃÂÃÂ÷ÃÂþÃÂòÃÂðÃÂýÃÂøÃÂõ]]/[[ÃÂÃÂÃÂõÃÂÃÂÃÂôÃÂøÃÂúÃÂÃÂÃÂàÃÂÃÂÃÂõÃÂÃÂÃÂÃÂÃÂøÃÂÃÂÃÂþÃÂòÃÂðÃÂýÃÂøÃÂÃÂ]]/[[ÃÂÃÂÃÂÃÂÃÂøÃÂñÃÂúÃÂð ÃÂÿÃÂÃÂÃÂõÃÂòÃÂÃÂÃÂÃÂÃÂõÃÂýÃÂøÃÂàÃÂûÃÂøÃÂüÃÂøÃÂÃÂÃÂð ÃÂÿÃÂðÃÂüÃÂÃÂÃÂÃÂÃÂø]]
 |  | 
|  |  |  |  | 
| − | ÃÂÃÂÃÂýÃÂóÃÂûÃÂøÃÂùÃÂÃÂÃÂúÃÂþÃÂõ ÃÂýÃÂðÃÂ÷ÃÂòÃÂðÃÂýÃÂøÃÂõ: [[Memory Limit Exceeded]].
 | + | Английское название: [[Memory Limit Exceeded]], [[ML]] | 
|  |  |  |  | 
| − | ÃÂÃÂÃÂÃÂÃÂøÃÂñÃÂúÃÂð ÃÂôÃÂøÃÂðÃÂóÃÂýÃÂþÃÂÃÂÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂõÃÂÃÂÃÂÃÂÃÂÃÂ,ÃÂõÃÂÃÂÃÂûÃÂø ÃÂò ÃÂÿÃÂÃÂÃÂþÃÂÃÂÃÂõÃÂÃÂÃÂÃÂÃÂõ ÃÂÃÂÃÂðÃÂñÃÂþÃÂÃÂÃÂàÃÂÃÂÃÂõÃÂÃÂÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂðÃÂàÃÂÿÃÂÃÂÃÂþÃÂóÃÂÃÂÃÂðÃÂüÃÂüÃÂð ÃÂÿÃÂþÃÂÃÂÃÂÃÂÃÂõÃÂñÃÂøÃÂûÃÂð ÃÂñÃÂþÃÂûÃÂÃÂÃÂÃÂÃÂõ ÃÂÿÃÂðÃÂüÃÂÃÂÃÂÃÂÃÂø,ÃÂÃÂÃÂõÃÂü ÃÂÃÂÃÂúÃÂðÃÂ÷ÃÂðÃÂýÃÂþ ÃÂò ÃÂþÃÂóÃÂÃÂÃÂðÃÂýÃÂøÃÂÃÂÃÂõÃÂýÃÂøÃÂÃÂÃÂÃÂ
 ÃÂ÷ÃÂðÃÂôÃÂðÃÂÃÂÃÂø.ÃÂÃÂÃÂñÃÂþÃÂÃÂÃÂýÃÂþÃÂòÃÂðÃÂýÃÂýÃÂþÃÂÃÂÃÂÃÂÃÂàÃÂôÃÂøÃÂðÃÂóÃÂýÃÂþÃÂÃÂÃÂÃÂÃÂøÃÂÃÂÃÂþÃÂòÃÂðÃÂýÃÂøÃÂàÃÂÃÂÃÂÃÂÃÂþÃÂù ÃÂþÃÂÃÂÃÂøÃÂñÃÂúÃÂø ÃÂòÃÂÃÂÃÂ÷ÃÂÃÂÃÂòÃÂðÃÂõÃÂàÃÂôÃÂøÃÂÃÂÃÂúÃÂÃÂÃÂÃÂÃÂÃÂÃÂøÃÂø (ÃÂÃÂÃÂü.ÃÂôÃÂðÃÂûÃÂõÃÂõ).
 | + | Ошибка диагностируется, если в процессе работы тестирующая программа потребила больше памяти, чем указано в ограничениях задачи. Обоснованность диагностирования этой ошибки вызывает дискуссии (см. далее). | 
|  |  |  |  | 
| − | ÃÂàÃÂðÃÂ÷ÃÂýÃÂÃÂÃÂõ ÃÂÃÂÃÂõÃÂÃÂÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂÃÂøÃÂõ ÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂõÃÂüÃÂàÃÂÿÃÂþÃÂôÃÂÃÂ
ÃÂþÃÂôÃÂÃÂÃÂàÃÂú ÃÂþÃÂóÃÂÃÂÃÂðÃÂýÃÂøÃÂÃÂÃÂõÃÂýÃÂøÃÂàÃÂÿÃÂðÃÂüÃÂÃÂÃÂÃÂÃÂø ÃÂôÃÂûÃÂàÃÂÃÂÃÂðÃÂñÃÂþÃÂÃÂÃÂðÃÂÃÂÃÂÃÂÃÂõÃÂù ÃÂÿÃÂÃÂÃÂþÃÂóÃÂÃÂÃÂðÃÂüÃÂüÃÂàÃÂÿÃÂþ-ÃÂÃÂÃÂðÃÂ÷ÃÂýÃÂþÃÂüÃÂÃÂ.ÃÂàejudgeÃÂþÃÂóÃÂÃÂÃÂðÃÂýÃÂøÃÂÃÂÃÂõÃÂýÃÂøÃÂõ ÃÂÿÃÂðÃÂüÃÂÃÂÃÂÃÂÃÂø ÃÂÃÂÃÂõÃÂðÃÂûÃÂøÃÂ÷ÃÂÃÂÃÂõÃÂÃÂÃÂÃÂÃÂàÃÂàÃÂÿÃÂþÃÂüÃÂþÃÂÃÂÃÂÃÂÃÂàÃÂÃÂÃÂÃÂÃÂÃÂÃÂðÃÂýÃÂþÃÂòÃÂúÃÂø ÃÂþÃÂóÃÂÃÂÃÂðÃÂýÃÂøÃÂÃÂÃÂõÃÂýÃÂøÃÂàÃÂýÃÂð ÃÂÃÂÃÂðÃÂ÷ÃÂüÃÂõÃÂàÃÂòÃÂøÃÂÃÂÃÂÃÂÃÂÃÂÃÂðÃÂûÃÂÃÂÃÂýÃÂþÃÂóÃÂþ ÃÂðÃÂôÃÂÃÂÃÂõÃÂÃÂÃÂýÃÂþÃÂóÃÂþ ÃÂÿÃÂÃÂÃÂþÃÂÃÂÃÂÃÂÃÂÃÂÃÂðÃÂýÃÂÃÂÃÂÃÂÃÂòÃÂð ÃÂø ÃÂÃÂÃÂðÃÂ÷ÃÂüÃÂõÃÂàÃÂÃÂÃÂÃÂÃÂõÃÂúÃÂð (ÃÂÃÂÃÂü. [[ulimit]]).ÃÂâÃÂðÃÂúÃÂøÃÂü ÃÂþÃÂñÃÂÃÂÃÂðÃÂ÷ÃÂþÃÂü,ÃÂÃÂÃÂõÃÂÃÂÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂõÃÂüÃÂðÃÂàÃÂÿÃÂÃÂÃÂþÃÂóÃÂÃÂÃÂðÃÂüÃÂüÃÂð ÃÂýÃÂõ ÃÂüÃÂþÃÂöÃÂõÃÂàÃÂÿÃÂÃÂÃÂõÃÂòÃÂÃÂÃÂÃÂÃÂøÃÂÃÂÃÂàÃÂÃÂÃÂÃÂÃÂÃÂÃÂðÃÂýÃÂþÃÂòÃÂûÃÂõÃÂýÃÂýÃÂÃÂÃÂõ ÃÂþÃÂóÃÂÃÂÃÂðÃÂýÃÂøÃÂÃÂÃÂõÃÂýÃÂøÃÂÃÂ.
 | + | Разные тестирующие системы подходят к ограничению памяти для работающей программы по-разному. В ejudge ограничение памяти реализуется с помощью установки ограничения на размер виртуального адресного пространства и размер стека (см. [[ulimit]]). Таким образом, тестируемая программа не может превысить установленные ограничения. | 
|  |  |  |  | 
| − | ÃÂÃÂÃÂøÃÂðÃÂóÃÂýÃÂþÃÂÃÂÃÂÃÂÃÂøÃÂÃÂÃÂþÃÂòÃÂðÃÂýÃÂøÃÂõ ÃÂþÃÂÃÂÃÂøÃÂñÃÂúÃÂø ÃÂÿÃÂÃÂÃÂõÃÂòÃÂÃÂÃÂÃÂÃÂõÃÂýÃÂøÃÂàÃÂþÃÂóÃÂÃÂÃÂðÃÂýÃÂøÃÂÃÂÃÂõÃÂýÃÂøÃÂàÃÂÿÃÂþ ÃÂÿÃÂðÃÂüÃÂÃÂÃÂÃÂÃÂø ÃÂò ÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂõÃÂüÃÂõ ejudgeÃÂÃÂÃÂðÃÂñÃÂþÃÂÃÂÃÂðÃÂõÃÂÃÂ,ÃÂÃÂÃÂþÃÂûÃÂúÃÂþ ÃÂõÃÂÃÂÃÂûÃÂø ÃÂÃÂÃÂÃÂÃÂÃÂÃÂðÃÂýÃÂþÃÂòÃÂûÃÂõÃÂý [[ÃÂÿÃÂðÃÂÃÂÃÂàÃÂú ÃÂÃÂÃÂôÃÂÃÂÃÂàLinux]].ÃÂÃÂÃÂÃÂÃÂûÃÂø ÃÂÿÃÂðÃÂÃÂÃÂàÃÂýÃÂõ ÃÂÃÂÃÂÃÂÃÂÃÂÃÂðÃÂýÃÂþÃÂòÃÂûÃÂõÃÂý,ÃÂÿÃÂÃÂÃÂõÃÂòÃÂÃÂÃÂÃÂÃÂõÃÂýÃÂøÃÂõ ÃÂþÃÂóÃÂÃÂÃÂðÃÂýÃÂøÃÂÃÂÃÂõÃÂýÃÂøÃÂàÃÂÿÃÂþ ÃÂÿÃÂðÃÂüÃÂÃÂÃÂÃÂÃÂø ÃÂñÃÂÃÂÃÂôÃÂõÃÂàÃÂôÃÂøÃÂðÃÂóÃÂýÃÂþÃÂÃÂÃÂÃÂÃÂøÃÂÃÂÃÂþÃÂòÃÂðÃÂýÃÂþ ÃÂúÃÂðÃÂú ÃÂþÃÂÃÂÃÂøÃÂñÃÂúÃÂð ÃÂòÃÂÃÂÃÂõÃÂüÃÂõÃÂýÃÂø ÃÂòÃÂÃÂÃÂÿÃÂþÃÂûÃÂýÃÂõÃÂýÃÂøÃÂÃÂ.ÃÂÃÂÃÂÃÂÃÂþÃÂüÃÂõ ÃÂÃÂÃÂþÃÂóÃÂþ,ÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂõÃÂüÃÂð ejudgeÃÂÿÃÂþÃÂ÷ÃÂòÃÂþÃÂûÃÂÃÂÃÂõÃÂàÃÂþÃÂÃÂÃÂúÃÂûÃÂÃÂÃÂÃÂÃÂøÃÂÃÂÃÂàÃÂôÃÂøÃÂðÃÂóÃÂýÃÂþÃÂÃÂÃÂÃÂÃÂøÃÂÃÂÃÂþÃÂòÃÂðÃÂýÃÂøÃÂõ ÃÂôÃÂðÃÂýÃÂýÃÂþÃÂù ÃÂþÃÂÃÂÃÂøÃÂñÃÂúÃÂø ÃÂôÃÂðÃÂöÃÂõ ÃÂõÃÂÃÂÃÂûÃÂø ÃÂÿÃÂðÃÂÃÂÃÂàÃÂú ÃÂÃÂÃÂôÃÂÃÂÃÂàÃÂÃÂÃÂÃÂÃÂÃÂÃÂðÃÂýÃÂþÃÂòÃÂûÃÂõÃÂý.
 | + | Диагностирование ошибки превышения ограничения по памяти в системе ejudge работает, толко если установлен [[патч к ядру Linux]]. Если патч не установлен, превышение ограничения по памяти будет диагностировано как ошибка времени выполнения. Кроме того, система ejudge позволяет отключить диагностирование данной ошибки даже если патч к ядру установлен. | 
|  |  |  |  | 
| − | ÃÂÃÂ¥ÃÂþÃÂÃÂÃÂàÃÂôÃÂøÃÂðÃÂóÃÂýÃÂþÃÂÃÂÃÂÃÂÃÂøÃÂÃÂÃÂþÃÂòÃÂðÃÂýÃÂøÃÂõ ÃÂôÃÂðÃÂýÃÂýÃÂþÃÂù ÃÂþÃÂÃÂÃÂøÃÂñÃÂúÃÂø ÃÂüÃÂþÃÂöÃÂõÃÂàÃÂñÃÂÃÂÃÂÃÂÃÂàÃÂÿÃÂþÃÂûÃÂõÃÂ÷ÃÂýÃÂþ ÃÂôÃÂûÃÂàÃÂÃÂÃÂÃÂÃÂðÃÂÃÂÃÂÃÂÃÂýÃÂøÃÂúÃÂþÃÂò ÃÂôÃÂûÃÂàÃÂþÃÂÃÂÃÂûÃÂðÃÂôÃÂúÃÂø ÃÂøÃÂÃÂ
 ÃÂÃÂÃÂõÃÂÃÂÃÂõÃÂýÃÂøÃÂù,ÃÂò ÃÂñÃÂþÃÂûÃÂÃÂÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂòÃÂõ ÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂðÃÂÃÂÃÂøÃÂù ÃÂóÃÂÃÂÃÂðÃÂýÃÂøÃÂÃÂÃÂð ÃÂüÃÂõÃÂöÃÂôÃÂàÃÂþÃÂÃÂÃÂøÃÂñÃÂúÃÂþÃÂù ÃÂÿÃÂÃÂÃÂø ÃÂòÃÂÃÂÃÂÿÃÂþÃÂûÃÂýÃÂõÃÂýÃÂøÃÂø ÃÂÿÃÂÃÂÃÂþÃÂóÃÂÃÂÃÂðÃÂüÃÂüÃÂàÃÂø ÃÂþÃÂÃÂÃÂøÃÂñÃÂúÃÂþÃÂù ÃÂÿÃÂÃÂÃÂõÃÂòÃÂÃÂÃÂÃÂÃÂõÃÂýÃÂøÃÂàÃÂþÃÂóÃÂÃÂÃÂðÃÂýÃÂøÃÂÃÂÃÂõÃÂýÃÂøÃÂàÃÂÿÃÂþ ÃÂÿÃÂðÃÂüÃÂÃÂÃÂÃÂÃÂø ÃÂþÃÂúÃÂðÃÂ÷ÃÂÃÂÃÂòÃÂðÃÂõÃÂÃÂÃÂÃÂÃÂàÃÂþÃÂÃÂÃÂõÃÂýÃÂàÃÂÃÂÃÂðÃÂ÷ÃÂüÃÂÃÂÃÂÃÂÃÂþÃÂù.
 | + | Хотя диагностирование данной ошибки может быть полезно для участников для отладки их решений, в большистве ситуаций граница между ошибкой при выполнении программы и ошибкой превышения ограничения по памяти оказывается очень размытой. | 
|  |  |  |  | 
| − | ÃÂÃÂÃÂðÃÂÿÃÂÃÂÃÂøÃÂüÃÂõÃÂÃÂ,ÃÂõÃÂÃÂÃÂûÃÂø ÃÂÿÃÂÃÂÃÂõÃÂòÃÂÃÂÃÂÃÂÃÂõÃÂý ÃÂüÃÂðÃÂúÃÂÃÂÃÂøÃÂüÃÂðÃÂûÃÂÃÂÃÂýÃÂÃÂÃÂù ÃÂÃÂÃÂðÃÂ÷ÃÂüÃÂõÃÂàÃÂÃÂÃÂÃÂÃÂõÃÂúÃÂð ÃÂøÃÂ÷-ÃÂ÷ÃÂð ÃÂÃÂÃÂþÃÂóÃÂþ,ÃÂÃÂÃÂÃÂÃÂþ ÃÂÿÃÂÃÂÃÂþÃÂóÃÂÃÂÃÂðÃÂüÃÂüÃÂð ÃÂòÃÂþÃÂÃÂÃÂûÃÂð ÃÂò ÃÂñÃÂõÃÂÃÂÃÂúÃÂþÃÂýÃÂõÃÂÃÂÃÂýÃÂÃÂÃÂàÃÂÃÂÃÂõÃÂúÃÂÃÂÃÂÃÂÃÂÃÂÃÂøÃÂÃÂ,ÃÂÃÂÃÂþ ÃÂÃÂÃÂðÃÂúÃÂðÃÂàÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂðÃÂÃÂÃÂøÃÂàÃÂôÃÂþÃÂûÃÂöÃÂýÃÂð ÃÂÃÂÃÂúÃÂþÃÂÃÂÃÂõÃÂõ ÃÂÃÂÃÂðÃÂÃÂÃÂÃÂÃÂüÃÂðÃÂÃÂÃÂÃÂÃÂøÃÂòÃÂðÃÂÃÂÃÂÃÂÃÂÃÂÃÂàÃÂúÃÂðÃÂú ÃÂþÃÂÃÂÃÂøÃÂñÃÂúÃÂð ÃÂÿÃÂÃÂÃÂø ÃÂòÃÂÃÂÃÂÿÃÂþÃÂûÃÂýÃÂõÃÂýÃÂøÃÂø ÃÂÿÃÂÃÂÃÂþÃÂóÃÂÃÂÃÂðÃÂüÃÂüÃÂÃÂ.ÃÂÃÂÃÂþ ÃÂàÃÂôÃÂÃÂÃÂÃÂÃÂóÃÂþÃÂù ÃÂÃÂÃÂÃÂÃÂþÃÂÃÂÃÂþÃÂýÃÂÃÂ,ÃÂõÃÂÃÂÃÂûÃÂø ÃÂÿÃÂÃÂÃÂþÃÂóÃÂÃÂÃÂðÃÂüÃÂüÃÂð ÃÂÿÃÂþÃÂÿÃÂÃÂÃÂÃÂÃÂðÃÂûÃÂðÃÂÃÂÃÂàÃÂòÃÂÃÂÃÂôÃÂõÃÂûÃÂøÃÂÃÂÃÂàÃÂÃÂÃÂûÃÂøÃÂÃÂÃÂúÃÂþÃÂü ÃÂüÃÂýÃÂþÃÂóÃÂþ ÃÂÿÃÂðÃÂüÃÂÃÂÃÂÃÂÃÂø ÃÂò ÃÂÃÂÃÂÃÂÃÂõÃÂúÃÂõ (ÃÂýÃÂðÃÂÿÃÂÃÂÃÂøÃÂüÃÂõÃÂÃÂ,ÃÂøÃÂ÷-ÃÂ÷ÃÂð ÃÂÃÂÃÂûÃÂøÃÂÃÂÃÂúÃÂþÃÂü ÃÂñÃÂþÃÂûÃÂÃÂÃÂÃÂÃÂþÃÂóÃÂþ ÃÂûÃÂþÃÂúÃÂðÃÂûÃÂÃÂÃÂýÃÂþÃÂóÃÂþ ÃÂüÃÂðÃÂÃÂÃÂÃÂÃÂøÃÂòÃÂð),ÃÂÃÂÃÂðÃÂúÃÂðÃÂàÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂðÃÂÃÂÃÂøÃÂàÃÂôÃÂþÃÂûÃÂöÃÂýÃÂð ÃÂÃÂÃÂðÃÂÃÂÃÂÃÂÃÂüÃÂðÃÂÃÂÃÂÃÂÃÂøÃÂòÃÂðÃÂÃÂÃÂÃÂÃÂÃÂÃÂàÃÂúÃÂðÃÂú ÃÂÿÃÂÃÂÃÂõÃÂòÃÂÃÂÃÂÃÂÃÂõÃÂýÃÂøÃÂõ ÃÂþÃÂóÃÂÃÂÃÂðÃÂýÃÂøÃÂÃÂÃÂõÃÂýÃÂøÃÂàÃÂÿÃÂþ ÃÂÿÃÂðÃÂüÃÂÃÂÃÂÃÂÃÂø.ÃÂÃÂÃÂÃÂÃÂÃÂÃÂõÃÂÃÂÃÂÃÂÃÂòÃÂõÃÂýÃÂýÃÂþ,ÃÂýÃÂõÃÂòÃÂþÃÂ÷ÃÂüÃÂþÃÂöÃÂýÃÂþ ÃÂÿÃÂÃÂÃÂþÃÂÃÂÃÂÃÂÃÂÃÂÃÂü ÃÂÃÂÃÂÿÃÂþÃÂÃÂÃÂþÃÂñÃÂþÃÂü ÃÂÃÂÃÂõÃÂÃÂÃÂúÃÂþ ÃÂÃÂÃÂðÃÂ÷ÃÂûÃÂøÃÂÃÂÃÂøÃÂÃÂÃÂàÃÂÃÂÃÂÃÂÃÂø ÃÂôÃÂòÃÂõ ÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂðÃÂÃÂÃÂøÃÂø.
 | + | Например, если превышен максимальный размер стека из-за того, что программа вошла в бесконечную рекурсию, то такая ситуация должна скорее рассматриваться как ошибка при выполнении программы. Но с другой стороны, если программа попыталась выделить слишком много памяти в стеке (например, из-за слишком большого локального массива), такая ситуация  должна рассматриваться как превышение ограничения по памяти. Естественно, невозможно простым способом четко различить эти две ситуации. | 
|  |  |  |  | 
| − | ÃÂá ÃÂôÃÂÃÂÃÂÃÂÃÂóÃÂþÃÂù ÃÂÃÂÃÂÃÂÃÂþÃÂÃÂÃÂþÃÂýÃÂÃÂ,ÃÂýÃÂðÃÂÿÃÂÃÂÃÂøÃÂüÃÂõÃÂÃÂ,ÃÂò ÃÂÃÂÃÂ÷ÃÂÃÂÃÂúÃÂõ CÃÂÃÂÃÂÃÂÃÂýÃÂúÃÂÃÂÃÂøÃÂàmallocÃÂòÃÂþÃÂ÷ÃÂòÃÂÃÂÃÂðÃÂÃÂÃÂðÃÂõÃÂàNULL,ÃÂõÃÂÃÂÃÂûÃÂø ÃÂÿÃÂðÃÂüÃÂÃÂÃÂÃÂÃÂàÃÂòÃÂÃÂÃÂôÃÂõÃÂûÃÂøÃÂÃÂÃÂàÃÂýÃÂõ ÃÂÃÂÃÂôÃÂðÃÂûÃÂþÃÂÃÂÃÂÃÂ.ÃÂÃÂÃÂÃÂÃÂûÃÂø ÃÂÃÂÃÂõÃÂÃÂÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂõÃÂüÃÂðÃÂàÃÂÿÃÂÃÂÃÂþÃÂóÃÂÃÂÃÂðÃÂüÃÂüÃÂð ÃÂýÃÂõ ÃÂÿÃÂÃÂÃÂþÃÂòÃÂõÃÂÃÂÃÂÃÂÃÂõÃÂàÃÂÃÂÃÂõÃÂ÷ÃÂÃÂÃÂûÃÂÃÂÃÂÃÂÃÂðÃÂàÃÂÃÂÃÂÃÂÃÂýÃÂúÃÂÃÂÃÂøÃÂø mallocÃÂýÃÂð NULLÃÂø ÃÂÿÃÂþÃÂûÃÂÃÂÃÂÃÂÃÂðÃÂõÃÂàÃÂþÃÂÃÂÃÂøÃÂñÃÂúÃÂàÃÂôÃÂþÃÂÃÂÃÂÃÂÃÂÃÂÃÂÿÃÂð ÃÂÿÃÂþ ÃÂýÃÂÃÂÃÂûÃÂõÃÂòÃÂþÃÂüÃÂàÃÂÃÂÃÂúÃÂðÃÂ÷ÃÂðÃÂÃÂÃÂõÃÂûÃÂÃÂ,ÃÂÃÂÃÂþ ÃÂÃÂÃÂÃÂÃÂþ ÃÂÃÂÃÂøÃÂÿÃÂøÃÂÃÂÃÂýÃÂðÃÂàÃÂþÃÂÃÂÃÂøÃÂñÃÂúÃÂð ÃÂÿÃÂÃÂÃÂþÃÂóÃÂÃÂÃÂðÃÂüÃÂüÃÂøÃÂÃÂÃÂÃÂÃÂð ÃÂø ÃÂôÃÂþÃÂûÃÂöÃÂýÃÂð ÃÂÃÂÃÂðÃÂÃÂÃÂÃÂÃÂüÃÂðÃÂÃÂÃÂÃÂÃÂøÃÂòÃÂðÃÂÃÂÃÂÃÂÃÂÃÂÃÂàÃÂúÃÂðÃÂú ÃÂþÃÂÃÂÃÂøÃÂñÃÂúÃÂð ÃÂÿÃÂÃÂÃÂø ÃÂòÃÂÃÂÃÂÿÃÂþÃÂûÃÂýÃÂõÃÂýÃÂøÃÂø ÃÂÿÃÂÃÂÃÂþÃÂóÃÂÃÂÃÂðÃÂüÃÂüÃÂÃÂ.ÃÂàÃÂýÃÂðÃÂþÃÂñÃÂþÃÂÃÂÃÂþÃÂÃÂ,ÃÂÿÃÂÃÂÃÂþÃÂóÃÂÃÂÃÂðÃÂüÃÂüÃÂð ÃÂüÃÂþÃÂöÃÂõÃÂàÃÂþÃÂÃÂÃÂûÃÂðÃÂòÃÂûÃÂøÃÂòÃÂðÃÂÃÂÃÂàÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂðÃÂÃÂÃÂøÃÂø,ÃÂúÃÂþÃÂóÃÂôÃÂð mallocÃÂòÃÂþÃÂ÷ÃÂòÃÂÃÂÃÂðÃÂÃÂÃÂðÃÂõÃÂàNULL,ÃÂø ÃÂüÃÂþÃÂôÃÂøÃÂÃÂÃÂøÃÂÃÂÃÂøÃÂÃÂÃÂþÃÂòÃÂðÃÂÃÂÃÂàÃÂÃÂÃÂòÃÂþÃÂõ ÃÂÿÃÂþÃÂòÃÂõÃÂôÃÂõÃÂýÃÂøÃÂõ (ÃÂýÃÂðÃÂÿÃÂÃÂÃÂøÃÂüÃÂõÃÂÃÂ,ÃÂÿÃÂþÃÂÃÂÃÂøÃÂÃÂÃÂÃÂÃÂøÃÂò ÃÂÃÂ
ÃÂõÃÂÃÂ-ÃÂÃÂÃÂðÃÂñÃÂûÃÂøÃÂÃÂÃÂÃÂ).
 | + | С другой стороны, например, в языке C функция malloc возвращает NULL, если память выделить не удалось. Если тестируемая программа не проверяет результат функции malloc на NULL и получает ошибку доступа по нулевому указателю, то это типичная ошибка программиста и должна рассматриваться как ошибка при выполнении программы. И наоборот, программа может отлавливать ситуации, когда malloc возвращает NULL, и модифицировать свое поведение (например, почистив хеш-таблицу). | 
|  | + |   | 
|  | + | === Добавления в версии [[изменения в версии 3.12.0|3.12.0]] === | 
|  | + |   | 
|  | + | Если тестируемые программы | 
|  | + | запускаются [[Изоляция недоверенных процессов в контейнерах|в контейнерах]], | 
|  | + | для задачи установлено ограничение на | 
|  | + | [[Serve.cfg:problem:max_rss_size|максимальный размер оперативной памяти]], | 
|  | + | и включен режим | 
|  | + | [[serve.cfg:global:enable_memory_limit_error|обнаружения данной ошибки]], | 
|  | + | программа [[ej-suid-container]] эвристически определяет возникновение | 
|  | + | ошибки превышения ограничения памяти. | 
Навигация: Главная страница/Система ejudge/Использование/Вердикты тестирования/Ошибка превышения лимита памяти
Английское название: Memory Limit Exceeded, ML
Ошибка диагностируется, если в процессе работы тестирующая программа потребила больше памяти, чем указано в ограничениях задачи. Обоснованность диагностирования этой ошибки вызывает дискуссии (см. далее).
Разные тестирующие системы подходят к ограничению памяти для работающей программы по-разному. В ejudge ограничение памяти реализуется с помощью установки ограничения на размер виртуального адресного пространства и размер стека (см. ulimit). Таким образом, тестируемая программа не может превысить установленные ограничения.
Диагностирование ошибки превышения ограничения по памяти в системе ejudge работает, толко если установлен патч к ядру Linux. Если патч не установлен, превышение ограничения по памяти будет диагностировано как ошибка времени выполнения. Кроме того, система ejudge позволяет отключить диагностирование данной ошибки даже если патч к ядру установлен.
Хотя диагностирование данной ошибки может быть полезно для участников для отладки их решений, в большистве ситуаций граница между ошибкой при выполнении программы и ошибкой превышения ограничения по памяти оказывается очень размытой.
Например, если превышен максимальный размер стека из-за того, что программа вошла в бесконечную рекурсию, то такая ситуация должна скорее рассматриваться как ошибка при выполнении программы. Но с другой стороны, если программа попыталась выделить слишком много памяти в стеке (например, из-за слишком большого локального массива), такая ситуация  должна рассматриваться как превышение ограничения по памяти. Естественно, невозможно простым способом четко различить эти две ситуации.
С другой стороны, например, в языке C функция malloc возвращает NULL, если память выделить не удалось. Если тестируемая программа не проверяет результат функции malloc на NULL и получает ошибку доступа по нулевому указателю, то это типичная ошибка программиста и должна рассматриваться как ошибка при выполнении программы. И наоборот, программа может отлавливать ситуации, когда malloc возвращает NULL, и модифицировать свое поведение (например, почистив хеш-таблицу).
Добавления в версии 3.12.0
Если тестируемые программы
запускаются в контейнерах,
для задачи установлено ограничение на
максимальный размер оперативной памяти,
и включен режим
обнаружения данной ошибки,
программа ej-suid-container эвристически определяет возникновение
ошибки превышения ограничения памяти.