A distinct exception derived from std::bad_alloc, used in cases when memory didn't really run out, but the process or task reached the memory limit alloted for it. Using a distinct type for this case allows for LSA to correctly react to this case.