ПредишенСледващото

Грешка диагностицира, когато в процеса на тестова програма ще изисква повече памет, отколкото е посочено в ограниченията на проблема. Валидността на диагностициране на тази грешка е в дебата (вж. По-долу).

Диагностициране на грешки, надхвърлящи ограниченията на паметта в ejudge работи системата, ако тълкуването е настроен да закърпи Linux ядрото. Ако пластирът не е инсталиран, излишъците ограниченията на паметта ще бъдат диагностицирани като грешка по време на изпълнение. В допълнение, ejudge система ви позволява да изключите тази диагноза грешка, дори ако пластира върху ядрото инсталиран.

Въпреки, че диагнозата на тази грешка може да бъде полезна за участниците за отстраняване на грешки техните решения в повечето ситуации, на границата между грешката при изпълнението на програмата и грешка превишаване на паметта е много неясно.

Така например, ако тя надвишава максималния размер на стека се дължи на факта, че програмата влезе в безкрайна рекурсия, такава ситуация по-скоро трябва да се счита за грешка, когато се изпълнява програмата. Но от друга страна, ако програмата се опита да се разпределят твърде много памет в стека (например, поради прекомерно местно масив), тази ситуация трябва да се счита за превишаване на ограниченията на паметта. Естествено, не е възможно да изчистите един прост начин да се прави разлика между тези две ситуации.

От друга страна, например, във функцията на езика C изчистване връща NULL, ако не могат да се разпределят на паметта. Ако тестовата програма не проверява за функция NULL резултат изчистване и получава грешка за нула достъп показалка, той е типичен грешка програмист и трябва да се третира като грешка при изпълнение на програмата. Напротив, програмата може да хване ситуация, в която изчистване връща NULL, и промяна на тяхното поведение (например чрез почистване на хеш таблицата).

Свързани статии

Подкрепете проекта - споделете линка, благодаря!