Есть ли в c++ способ выделить память под все переменные?
Может вам лучше ошибку отловить, например запустить под дебаггером и посмотреть где и почему падает? :-)
Для начала прочитайте эти объяснения. Осознайте, что существует 2 принципиально разных способа хранения информации - на стеке и в "динамической памяти". Для объектов на стеке не надо дополнительно резервировать память, и они автоматически удаляются при выходе из функции. 
Выделить память автоматически, разумеется, нельзя. Дело в том, что часто нам не известен размер памяти, которую необходимо выделить. Однако, в большинстве случаев можно использовать стандартные типы данных, например, std::vector, в которых эти операции написаны за вас. В реальном коде может практически не быть в ручную вызываемых операций delete благодаря использованию "умных указателей".
В вашем случае далеко не факт что проблема именно в этом. Возможно, вы обращаетесь за границы какого-то массива или пытаетесь что-то повторно удалить, или одна из десятков других причин. Различное поведение может объясняться различным режимом сборки debug/release, или, скорее всего, вам "везет" в виртуалке, и вы не вылезаете за пределы зарезервированной для вашего приложения памяти.
P.S. Почитайте умных книжек по C++, без этого не как. Начните с этой, например.