Files
judge/example/mem-limit/mem.jdg
Mikhail Kornilovich ca56aa5bc4
Some checks failed
memory-limit / Build judge (push) Successful in 17s
memory-limit / Linux / clang (push) Failing after 9s
memory-limit / Linux / gcc (push) Failing after 10s
memory-limit / Windows / clang (push) Failing after 11s
memory-limit / Windows / msvc (push) Failing after 14s
fix stupid bug
2026-04-10 23:43:05 +03:00

36 lines
1.0 KiB
Plaintext

// End-to-end check that memory_limit is actually enforced by the runner.
// The solution allocates N MiB (argv[1]) and touches every page.
//
// - "within_limit" allocates 16 MiB under a 256 MiB cap → expected PASS
// - "exceeds_limit" allocates 256 MiB under a 64 MiB cap → expected MLE
//
// The workflow runs judge --json and asserts these statuses via jq.
build "$CC -O2 -std=c11 -Wall -Wextra solution.c -o solution"
build_windows "if /I \"%CC%\"==\"msvc\" (cl /nologo /O2 /W3 solution.c /Fe:solution.exe) else (%CC% -O2 -std=c11 -Wall -Wextra solution.c -o solution.exe)"
binary = "solution"
timeout 10s
normalize_crlf = true
group("within_limit") {
weight = 1.0
memory_limit = 256M
test("allocate_16mb") {
args = "16"
stdout = "ok 16\n"
}
}
group("exceeds_limit") {
weight = 0.0 // score doesn't matter — we assert the status in CI
memory_limit = 64M
test("allocate_256mb") {
args = "256"
// no stdout matcher: process is expected to be killed before it prints
}
}